用PagedDataSource实现分页

就分页的技术来看,无非是分两种:

一。通过存储过程来实现

     此点,暂时不讲,因为网上文章很多,迟一下再发表我的意见。

二。通过页面代码来实现

    我之前在网上看到一个文章,说的是为DATALIST分页,用的技术是viewstate保存分页信息,然后再通过这个信息(如当前是第几页,每页多少等)来实现分页。虽然能实现功能,不过,这一点明显是多此一举,究其原因,是由于没有深入认识。NET。其实。NET本身有一个PagedDataSource,它是从GridView里分离出来的分页代码封装,可以轻松实现分页。下面,就以DATALIST作为例子,看一下,他是怎样使用的:

None.gif       
None.gif以上代码省略
None.gif DataSet ds = db.ExecuteDataSet(dbc);
None.gif        PagedDataSource pds = new PagedDataSource();//初始化分页源
None.gif        pds.DataSource = ds.Tables[0].DefaultView;
None.gif        pds.PageSize = 15;//每页显示的记录数
None.gif    
None.gif        pds.AllowPaging = true;//是否分页
None.gif
None.gif
None.gif        pds.CurrentPageIndex = pageid - 1;//当前页数,因为从0开始,所以接收到的数减1
None.gif
None.gif        DataList1.DataSource = pds;//绑定数据源
None.gif        DataList1.DataBind();//绑定数据
None.gif
None.gif        if (pds.IsFirstPage)
None.gif
None.gif            hy1.Visible = false;
None.gif        if (pds.IsLastPage)
None.gif            hy2.Visible = false;
None.gif        int pg;
None.gif        int showp = 10;//显示多少页
None.gif
None.gif
None.gif       
None.gif
None.gif        string pgstr;
None.gif        pgstr = " ";//分页显示代码
None.gif        int startp;//开始页数
None.gif        int nowp;
None.gif        nowp = pds.CurrentPageIndex + 1;
None.gif        int totalp;
None.gif        totalp = pds.PageCount;//得到总页数
None.gif        //   startp = 1;
None.gif
None.gif        if (nowp % showp == 0)//是否等于上限
ExpandedBlockStart.gif ContractedBlock.gif         dot.gif{
InBlock.gif            startp = pds.CurrentPageIndex + 2;
InBlock.gif
InBlock.gif            if (totalp > (nowp+showp))
ExpandedSubBlockStart.gif ContractedSubBlock.gif             dot.gif{
InBlock.gif
InBlock.gif                pg = (nowp+showp);
ExpandedSubBlockEnd.gif            }
InBlock.gif            else
InBlock.gif                pg = totalp;
InBlock.gif
ExpandedBlockEnd.gif        }
None.gif        else
ExpandedBlockStart.gif ContractedBlock.gif         dot.gif{
InBlock.gif            startp = Convert.ToInt16((nowp) / showp) * showp;
InBlock.gif            pg = startp + showp;
InBlock.gif
ExpandedBlockEnd.gif        }
None.gif
None.gif
None.gif        if (startp == 0)
ExpandedBlockStart.gif ContractedBlock.gif         dot.gif{
InBlock.gif            pg = showp;
InBlock.gif            startp = 1;
ExpandedBlockEnd.gif        }
None.gif
None.gif      //  Response.Write(pg);
None.gif      //  Response.End();
None.gif
None.gif
None.gif        for (int p = startp; p <= pg; p++)//循环显示页数,并生成相应的URL
ExpandedBlockStart.gif ContractedBlock.gif         dot.gif{
InBlock.gif            if ((nowp) == p)
InBlock.gif                pgstr = pgstr + "    " + p;
InBlock.gif            else
InBlock.gif                pgstr = pgstr + "    <a href=\"" + Request.CurrentExecutionFilePath + "?PageID=" + Convert.ToString(p) + "&RootID=" + Convert.ToString(root_id) + "\">" + (p) + "</a>";
ExpandedBlockEnd.gif        }
None.gif
None.gif        fromto.Text = pgstr;
None.gif
None.gif
None.gif
None.gif        //  hy1.Text=Request.CurrentExecutionFilePath+"?pageIndex="+Convert.ToString(CurrentPage+1); 
None.gif
None.gif        hy1.NavigateUrl = Request.CurrentExecutionFilePath + "?PageID=" + Convert.ToString(pageid - 1) + "&RootID=" + Convert.ToString(root_id);
None.gif        hy2.NavigateUrl = Request.CurrentExecutionFilePath + "?PageID=" + Convert.ToString(pageid + 1) + "&RootID=" + Convert.ToString(root_id);
None.gif
None.gif        Label1.Text = Convert.ToString(pds.PageCount);
None.gif
None.gif以下代码省略

转载于:https://www.cnblogs.com/nianshi/archive/2007/06/29/799618.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值