我的分页已经实现行数如何控制
布局列的数目我选择3显示结果是
XXX XXX XXX
XXX XXX XXX
XXX XXX XXX
XXX 
分页
后面少了两个东西郁闷
布局列的数目5 显示结果为
XXX XXX XXX XXX XXX 
XXX XXX XXX XXX XXX 
分页 这样又太短了没什么内容
布局列的数目2 显示结果为
XXX XXX
XXX XXX
XXX XXX
XXX XXX
XXX XXX
分页这样又太长了
这个是是我代码的问题吗?代码完全正确可以运行
前台代码如下
<%@ Page Language="C#" MasterPageFile="~/display/Default.master" AutoEventWireup="true"
    CodeFile="display.aspx.cs" Inherits="display_display" Title="Untitled Page" %><asp:Content ID="Content1" ContentPlaceHolderID="Main" runat="Server">
    <br />
    <br />
    <br />
    <br />
    &nbsp;<br />
                <asp:DataList ID="DataList1" runat="server" Height="163px" RepeatColumns="2" RepeatDirection="Horizontal"
                    Width="576px">
                    <ItemTemplate>
                        <asp:ImageButton ID="ImageButton1" runat="server" Height="118px" ImageAlign="Baseline"
                            ImageUrl='<%#FormatURL(Eval("Pic_ID")) %>' Width="136px" />
                        <br />
                        <a href='Photo.aspx?Pic_ID=<%# DataBinder.Eval(Container,"DataItem.Pic_ID") %>'>
                            <%# DataBinder.Eval(Container, "DataItem.Pic_Title")%>
                        </a>
                    </ItemTemplate>
                </asp:DataList><br />
    <br />
    <br />
    <br />
                    <asp:LinkButton ID="FirstLB" runat="server" CommandName="first" OnCommand="LinkButton_Click">第一页</asp:LinkButton>&nbsp;
                    <asp:LinkButton ID="PreviousLB" runat="server" CommandName="prev" OnCommand="LinkButton_Click">上一页</asp:LinkButton>&nbsp;
                    <asp:LinkButton ID="NextLB" runat="server" CommandName="next" OnCommand="LinkButton_Click">下一页</asp:LinkButton>&nbsp;
                    <asp:LinkButton ID="EndLB" runat="server" CommandName="end" OnCommand="LinkButton_Click">最后一页</asp:LinkButton>
                    &nbsp; 总<asp:Label ID="TotalLbl" runat="server"></asp:Label>页 当前第<asp:Label ID="CurrentLbl"
                        runat="server"></asp:Label>页
                    <asp:LinkButton ID="JumpLB" runat="server" CommandName="jump" OnCommand="LinkButton_Click">跳到</asp:LinkButton>第
                    <asp:TextBox ID="TextBox1" runat="server" Width="90px"></asp:TextBox>
                    页<br />
    <br />
</asp:Content>
后台代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OleDb;
using System.IO;
using System.Drawing;public partial class display_display : System.Web.UI.Page
{
    int CurrentPage;//当前页数
    int PageSize;   //每页条数
    int PageCount;  //总页数
    int RecordCount;//总条数
    protected string FormatURL(object strArgument)
    {
        return "image.aspx?id=" + strArgument.ToString();
    }
    private void Page_Load(object sender, System.EventArgs e)
    {
        // 在此处放置用户代码以初始化页面
        PageSize = 10;//每页10条记录
        if (!Page.IsPostBack)
        {
            CurrentPage = 0;//当前页习惯设为0
            ViewState["PageIndex"] = 0;//页索引也设为0
            //计算总共有多少记录
            RecordCount = CalculateRecord();
            //计算总共有多少页
            if (RecordCount % PageSize == 0)
            {
                PageCount = RecordCount / PageSize;
            }
            else
            {
                PageCount = RecordCount / PageSize + 1;
            }            this.TotalLbl.Text = PageCount.ToString();//显示总页数
            ViewState["PageCount"] = PageCount;//会话session 对整个 application 有效 ,而视图状态 viewstate相当于某个页面的 session            this.DataListBind();//不可以放在初始化条件之前就绑定,那样的话,如果仅有一页的数据,“下一页”页仍然显示        }
    }
    //计算总共有多少条记录
    private int CalculateRecord()
    {
        try
        {
            int recordCount;
            OleDbConnection oc = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath(@"~\App_Data\DataBase.aspx")); //数据库使用Northwind;
            oc.Open();
            string OleDb = "select count(*) as [count] from Picture";
            OleDbCommand cmd = new OleDbCommand(OleDb, oc);
            OleDbDataReader sdr = cmd.ExecuteReader();            if (sdr.Read())
            {
                recordCount = Int32.Parse(sdr["count"].ToString());
            }
            else
            {
                recordCount = 0;
            }            sdr.Close();
            oc.Close();
            return recordCount;
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }
    //将数据绑定到Datalist控件
    public void DataListBind()
    {
        try
        {
            int StartIndex = CurrentPage * PageSize;//设定导入的起终地址
            string OleDb = "SELECT [Pic_ID], [Pic],[Pic_Title] FROM [Picture] order by [Pic_id] desc";
            DataSet ds = new DataSet();
            OleDbConnection oc = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath(@"~\App_Data\DataBase.aspx"));
            oc.Open();            OleDbDataAdapter sda = new OleDbDataAdapter(OleDb, oc);
            sda.Fill(ds, StartIndex, PageSize, "Picture");//这是sda.Fill方法的第一次重载,里面的变量分别是数据集DataSet ,开始记录数StartRecord,最大的记录数MaxRecord,数据表名TableName
            this.DataList1.DataSource = ds.Tables["Picture"].DefaultView;
            this.DataList1.DataBind();
            this.PreviousLB.Enabled = true;
            this.NextLB.Enabled = true;
            if (CurrentPage == (PageCount - 1)) this.NextLB.Enabled = false;//当为最后一页时,下一页链接按钮不可用
            if (CurrentPage == 0) this.PreviousLB.Enabled = false;//当为第一页时,上一页按钮不可用
            this.CurrentLbl.Text = (CurrentPage + 1).ToString();//当前页数        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }
    public void LinkButton_Click(Object sender, CommandEventArgs e)//自己编写的按钮点击事件
    {
        CurrentPage = (int)ViewState["PageIndex"];//获得当前页索引
        PageCount = (int)ViewState["PageCount"];//获得总页数
        string cmd = e.CommandName;        //判断cmd,以判定翻页方向
        switch (cmd)
        {
            case "prev"://上一页
                if (CurrentPage > 0) CurrentPage--;
                break;            case "next":
                if (CurrentPage < (PageCount - 1)) CurrentPage++;//下一页
                break;            case "first"://第一页
                CurrentPage = 0;
                break;            case "end"://最后一页
                CurrentPage = PageCount - 1;
                break;            case "jump"://跳转到第几页
                if (this.TextBox1.Text.Trim() == "" || Int32.Parse(this.TextBox1.Text.Trim()) > PageCount)//如果输入数字为空或超出范围则返回
                {
                    return;
                }
                else
                {
                    CurrentPage = Int32.Parse(this.TextBox1.Text.ToString()) - 1;
                    break;
                }
        }
        ViewState["PageIndex"] = CurrentPage;//获得当前页        this.DataListBind();//重新将DataList绑定到数据库
    }}