GridView分页

GridView有AllowPaging属性设置为True 即可实现分页,但是使用这种分页方式效率太低 当数据量很大时会严重影响用户体验,所以有必要让程序员自己写一个分页程序。
原理是让用户传入指定的页面索引数pageindex 和每个页面的信息条数 pagesize 来从数据库中获取指定区间内的数据信息。


前台首先在前台声明几个linkbutton
        < asp :   LinkButton   ID   ="btnFirst"   runat   ="server"   onclick   ="btnFirst_Click"> 第一页 </   asp : LinkButton   >
          < asp :   LinkButton   ID   ="btnPre"   runat   ="server"   onclick   ="btnPre_Click"> 上一页 </   asp : LinkButton   >
          < asp :   LinkButton   ID   ="btnNext"   runat   ="server"   onclick   ="btnNext_Click"> 下一页 </   asp : LinkButton   >
          < asp :   LinkButton   ID   ="btnLast"   runat   ="server"> 最后一页 </ asp   : LinkButton >


后台代码中最核心的是 sql语句。首先我们需要一个列,他需要保证数据中的数据是连续不断的 如123456。这样我需要用到  ROW_NUMBER() over(order by Id) 详见开窗函数

            string cmdstring = "select T1.indexs,T1.NewsTitle,SUBSTRING(T1.NewsContent,0,20)+'......' AS NewsContent,T2.RealName,T3.ClassName,T1.CreateTime from (select ROW_NUMBER() over(order by Id) as indexs,* from T_News1 ) AS T1 join T_User AS T2 on T1.NewsCreator=T2.UserId join T_NewsClass AS T3 on T1.ClassId=T3.ClassId where T1.indexs between (@pageindex-1) * @pagesize + 1 and @pageindex * @pagesize";

            cmd.Parameters.AddWithValue(   "@pageSize" , 30);
            cmd.Parameters.AddWithValue(   "@pageIndex" ,( int   )ViewState[ "pageindex" ]);   这里为什么用ViewState。因为 ViewState不会随着事件回发而重新声明,这样在事件回发后还会保留事件回发前的值。这点对于后面改变pageindex会很有帮助


     在linkbutton事件中为 viewstate++ 或--
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值