首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

DataList分页如何控制行数

2012-01-11 
DataList分页怎么控制行数?我的分页已经实现行数如何控制布局列的数目我选择3显示结果是XXX XXX XXXXXX XX

DataList分页怎么控制行数?
我的分页已经实现行数如何控制
布局列的数目我选择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绑定到数据库


        }

}




[解决办法]
效果就是这样的,最后一页总会出现不足 M*N 的情况
[解决办法]
我都不知道你要什么效果了。已经完全满足你的要求了呀
[解决办法]
PageSize 应该改改,
应该按 DATALIST 行来划分,每页显示多少行.
PageSize = DATALIST 显示行数 * DATALIST 显示列数.

或者

PageSize = DATALIST 显示列数的倍数


[解决办法]

哈.哈. 楼主这段话怎么这么 "卡娃依 "呀..
被你打败了..

------------------------------------------
布局列的数目我选择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
分页这样又太长了
------------------------------------------




[解决办法]
本来就这么几条记录

你想怎么排啊

楼主。。。
[解决办法]
不能每页显示9个数据吗?

热点排行