• 控件用法参考:DataList和Repeater控件的分页显示功能


    使用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 ();
    }

    动行显示效果如图:

    PagedDataSource 类的部分公共属性( 略)

  • 相关阅读:
    Neutron 理解 (1): Neutron 所实现的虚拟化网络 [How Netruon Virtualizes Network]
    openstack里面的Provider network 和 Tenant network 的区别
    Openstack网络相关概念比较复杂,经常使人混淆,本文进行相关说明。
    OpenStack 网络:Neutron 初探
    openstack 网络架构 nova-network + neutron
    Java 性能测试的四项原则
    微信公众号开发之微信买单
    微信公众号开发之如何使用JSSDK
    微信公众号开发之如何一键导出微信所有用户信息到Excel
    [内核驱动] 链表LIST_ENTRY的操作(转)
  • 原文地址:https://www.cnblogs.com/Dlonghow/p/1263917.html
Copyright © 2020-2023  润新知