使用AspNetPager与GridView完成分页-阿里云开发者社区

开发者社区> 浣熊干面包> 正文

使用AspNetPager与GridView完成分页

简介:
+关注继续查看

由于GridView的分页功能实在是太弱了,所以需要使用强大的AspNetPager来作为分页控件。最简单的办法就是GridView控件下面接着放一个AspNetPager控件,但是这样好像就不能用GridView的分页功能了。在数据量不大的情况下,使用GridView的分页是十分方便有效的。另外还有一个问题就是分页控件在GridView生成的表格的下面,而没有像GridView自带分页那样包含到表格内部,这点也不是很爽。

要解决以上的问题,可以将AspNetPager放入GridView的分页模板(PagerTemplate)中,如下代码所示:

复制代码
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="True">
    
<Columns>
        
<asp:BoundField DataField="DmId" HeaderText="序号" ReadOnly="True" SortExpression="DMID" />
        ……
        ……
    
</Columns>
    
<PagerStyle HorizontalAlign="Center" />
    
<PagerTemplate>
        
<asp:AspNetPager ID="AspNetPager1" runat="server" ShowBoxThreshold="5" ShowPageIndexBox="Auto" CenterCurrentPageButton="True">
        
</asp:AspNetPager>
    
</PagerTemplate>
</asp:GridView> 
复制代码

 

但是这样做要解决几个问题:

(1)这个GridView每一页的行数AspNetPager并不知道。解决办法:为AspNetPager添加属性PageSize="<%# ((GridView)Container.NamingContainer).PageSize%>"

(2)这个GridView绑定的总记录数AspNetPager也不知道。解决办法:为AspNetPager添加属性RecordCount="<%#((IList)(((GridView)Container.NamingContainer).DataSource)).Count %>"

(3)这个GridView当前在第几页AspNetPager也不知道。这个问题的解决可不像前面那么简单了,通过设置属性CurrentPageIndex的方式AspNetPager根本不认!(估计是AspNetPager的一个Bug吧)要解决这个问题就只有在每次翻页时后台代码中为AspNetPager设置CurrentPageIndex属性。

(4)使用AspNetPager后GridView并不会触发PageChanging事件。但是要触发AspNetPager的PageChanging事件,所以可以为分页模板中的AspNetPager控件添加事件处理:OnPageChanging="AspNetPager1_PageChanging",对应的就是分页的后台代码:

复制代码
protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
    
this.GridView1.PageIndex = e.NewPageIndex - 1;//这儿需要注意,AspNetPager中的PageIndex是从1开始的,而GridView的是从0开始的,所以要减1.
    Bind();//GridView的数据绑定方法
    Wuqi.Webdiyer.AspNetPager pager = this.GridView1.BottomPagerRow.FindControl("AspNetPager1"as Wuqi.Webdiyer.AspNetPager;
    pager.CurrentPageIndex 
= e.NewPageIndex;//这里就是为了解决前面的第3个问题。

复制代码

 

OK,以上4个问题都解决了,我们的GridView+AspNetPager的分页就完成了!另外如果觉得AspNetPager的样式不好看可以再定义一下CSS。最后完整的代码是:

复制代码
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="True">
    
<Columns>
        
<asp:BoundField DataField="DmId" HeaderText="序号" ReadOnly="True" SortExpression="DMID" />
        ……
        ……
    
</Columns>
<PagerStyle CssClass="GridViewPager" HorizontalAlign="Center" />
    
<PagerTemplate>
        
<asp:AspNetPager ID="AspNetPager1" runat="server" ShowBoxThreshold="5" ShowPageIndexBox="Auto"
        PageSize
="<%# ((GridView)Container.NamingContainer).PageSize%>" OnPageChanging="AspNetPager1_PageChanging"
        RecordCount
="<%#((IList)(((GridView)Container.NamingContainer).DataSource)).Count %>"
        CenterCurrentPageButton
="True">
        
</asp:AspNetPager>
    
</PagerTemplate>
</asp:GridView>
//以下是后台代码
protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
    
this.GridView1.PageIndex = e.NewPageIndex - 1;
    Bind();
    Wuqi.Webdiyer.AspNetPager pager 
= this.GridView1.BottomPagerRow.FindControl("AspNetPager1"as Wuqi.Webdiyer.AspNetPager;
    pager.CurrentPageIndex 
= e.NewPageIndex;

复制代码
本文转自深蓝居博客园博客,原文链接:http://www.cnblogs.com/studyzy/archive/2008/07/30/1256877.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C#.NET使用Task,await,async,异步执行控件耗时事件(event),不阻塞UI线程和不跨线程执行UI更新,以及其他方式比较
原文:C#.NET使用Task,await,async,异步执行控件耗时事件(event),不阻塞UI线程和不跨线程执行UI更新,以及其他方式比较 使用Task,await,async,异步执行事件(event),不阻塞UI线程和不跨线程执行UI更新   使用Task,await,async 的异步模式 去执行事件(event) 解决不阻塞UI线程和不夸跨线程执行UI更新报错的最佳实践,附加几种其他方式比较 由于是Winform代码和其他原因,本文章只做代码截图演示,不做界面UI展示,当然所有代码都会在截图展示。
3316 0
Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果 --简易版
描述:         之前有做过一个记账本APP,拿来练手的,做的很简单,是用Eclipse开发的;         最近想把这个APP重新完善一下,添加了一些新的功能,并选用Android Studio来开发;         APP已经完善了一部分,现在就想把已经做好的功能整理一下,记录下来。
2532 0
将jQuery Pagination分页插件用于不使用AJAX加载数据的页面
将jQuery Pagination分页插件用于不使用AJAX加载数据的页面,项目使用SpringMVC,使用Freemarker绑定数据,但分页显示样式不想自己处理,所以使用jQuery Pagination分页插件。
736 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
8418 0
手动绑定SQLDataSource到GridView后分页的问题(转)
由于GridView的数据源是后台CS文件中代码绑定的。所以程序运行时,点击分页数后没有反应。解决办法如下: using System;using System.Data;using System.Configuration;using System.
681 0
Angular请求同步async、await使用方式
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/inforstack/article/details/84305087 啥也不说,贴出代码,看执行顺序。
5337 0
941
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载