经理
业务
您现在的位置:首页 >> 网站设计 >> 内容

使用PagedDataSource类实现DataList和Repeater控件的分页显示功能

Asp.net 提供了三个功能强大的列表控件:DataGrid、DataList 和 Repeater 控件,相对 DataGrid,DataList 和 Repeater 控件具有更高的样式自定义性,很多时候我们喜欢使用 DataList 或 Repeater 控件来显示数据,但是 Repeater 和 DataList 没有分页功能,有时很不方便。

    PagedDataSource 类封装了 DataGrid 控件的属性,从而使 DataGrid 控件可以执行分页,它就是一个数据的容器,我们先把数据从数据库中读取出来放在这个容器中,然后设置容器的属性取出当前要显示的页上的部分数据,然后将此部分数据再绑定到页面上的显示控件上。

    下面实例是 Repeater 控件和 HyperLink 控件结合 PagedDataSource 类实现的数据分页列表

数据功能实现源代码:

//对用于分页的类的引用

PagedDataSource pds=new PagedDataSource();

pds.DataSource=dt.DefaultView;//设置数据源(DataTable类型)

pds.AllowPaging=true;

//第页显示的行数

pds.PageSize=18;

//设置当前页

if(Pageindex<1) Pageindex=1;

pds.CurrentPageIndex=Pageindex-1;

rpt_NewsList.DataSource=pds;

rpt_NewsList.DataBind();

//显示页码

ltl_RecordCount.Text = pds.DataSourceCount.ToString();

ltl_PageCount.Text = pds.PageCount.ToString();

ltl_Pageindex.Text = Pageindex.ToString();

ltl_Jump.Text = Jump_List (pds.PageCount , Pageindex , L_Manage);

//显示上下翻页(URL 后面跟的参数自已跟据需要定义)

lbn_First.ToolTip = "跳转到首页";

lbn_First.NavigateUrl=Request.CurrentExecutionFilePath+"?Org_ID="+ L_Manage +"&page=1";

lbn_Prev.ToolTip = "跳转到上一页";

lbn_Prev.NavigateUrl=Request.CurrentExecutionFilePath+"?Org_ID="+ L_Manage +"&page="+(Pageindex-1);

lbn_Next.ToolTip = "跳转到下一页";

lbn_Next.NavigateUrl=Request.CurrentExecutionFilePath+"?Org_ID="+ L_Manage +"&page="+(Pageindex+1);

lbn_Last.ToolTip = "跳转到最后一页";

lbn_Last.NavigateUrl=Request.CurrentExecutionFilePath+"?Org_ID="+ L_Manage +"&page="+pds.PageCount.ToString();

//确定链接的显示方式

if(Pageindex<=1 && pds.PageCount<=1)

{

    lbn_First.NavigateUrl = "";

    lbn_Prev.NavigateUrl = "";

    lbn_Next.NavigateUrl = "";

    lbn_Last.NavigateUrl = "";

}

if(Pageindex<=1 && pds.PageCount>1)

{

    lbn_First.NavigateUrl = "";

    lbn_Prev.NavigateUrl = "";

}

if(Pageindex >= pds.PageCount)

{

    lbn_Next.NavigateUrl = "";

    lbn_Last.NavigateUrl = "";

}

/// <summary>

/// 计算分页跳转

/// </summary>

/// <param name="Pagecount">页面数</param>

/// <returns>string</returns>

private string Jump_List(int Pagecount , int Pageindex , long L_Manage)

{

StringBuilder sb = new StringBuilder ();

sb.Append ("<select id=\"Page_Jump\" name=\"Page_Jump\" onchange=\"window.location='"+ Request.CurrentExecutionFilePath +"?page='+ this.options[this.selectedIndex].value + '&Org_ID="+ L_Manage +"';\">");

for(int i = 1 ; i <= Pagecount ; i++)

{

if(Pageindex == i)

sb.Append ("<option value='"+ i +"' selected>"+ i +"</option>");

else

sb.Append ("<option value='"+ i +"'>"+ i +"</option>");

}

sb.Append ("</select>");

return sb.ToString ();

}

动行显示效果如图:

 

  • 九维软件科技有限公司 © 2010 版权所有 All Rights Resverved 未经授权,禁止复制、转播本站信息,经授权的引用必须注明出自本站 。
    Email:deuv@163.com 电话:0513-85338199 苏ICP备10045045号