正 文

数据网格之深入研究:分页和删除


www.7dspace.com  更新日期:2005-11-28 2:15:40  七度空间


非传统的思路

传统的开发思路认为,任何页面切换操作都应在数据项删除,而且数据重新与Grid绑定之后才应执行。基于我无法完全解释的原因,这儿遇到的并不是这种情况。我为此联系过微软公司,他们未能给我一个令人满意的解释。为了解决问题,你在删除数据之前必须检查页计数。在清单D的最后一个代码段中,我们更新了DeleteCommand事件处理程序。

到此为止,我认为代码本身已能说明全部问题。而且我假定你能理解期间所发生的事情,以及它为什么会像那样工作。但我希望详细地说说现在所发生的事情,使你能完全理解这个方案,并体会它实际是多么简单。首先,你需要知道在最后一页上有多少数据项。为此,需要对Item Count和Page Size使用Mod(取模)运算符。由于Mod运算符返回的只是余数,所以绝对不会有任何多余的数据需要处理。如果页上只余一项,那么占位符变量 Result就等于1。

由于DataGrid的CurrentPageIndex属性是一个从0开始的索引,而PageCount属性从1开始,所以必须从页计数上减2 (而不是1),才能在删除之后回退一页。这个事实没有很好地文档化,导致我浪费一个多小时来研究减1为什么不行。直到www.asp.net的 DataGrid论坛的一个管理员提醒我索引基数的区别,我才知道症结在哪里。

最后的封装

解决了几个疑难问题后,在Grid中合并分页和删除功能就是小事一桩:删除数据前更改页的索引,再删除数据、重新获取、重新绑定并把它显示出来。再次编译网页,再次删除最后一页上的所有数据项。这一次,在确认了删除之后,就能正确回退一页,切换到新的最后一页。

2页,页码:[1] [2] 

上一篇:网站盈利要素
下一篇:用悲观锁定来解决ADO.NET并发性问题
作者:周靖 译  来源:开发者在线 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐