今天学习了分页控件的处理,前几天测试了GridView,发现100k条记录就已经让人受不了了,今天的结果还不错,基本不到一秒钟就有结果了。速度的加快完全是因为数据库处理上的技巧,只读取需要的记录,而非全部。

找了几篇文章,其中一篇叫打造通用的分页控件,看上去很美,但是已经找不到源代码下载了,如果以后有空可以试一下其中的方法。还有一些文章是用Atlas的,由于我没有用Atlas,所以没细看。有一篇写了一个例子,但是没有做成控件,我觉得学习其使用的方法还行,但不实用。我最后采用的是一篇来自于天行者博客上的,这篇文章最初应该来自于微软,但作者将其改动了一些错误,并加入了Oracle的支持,源代码发布在博客上了。

该文章介绍的该控件在取得数据库连接字符串,选取数据的SQL语句、显示方式、要显示数据的控件等后,对数据库操作选取数据,并绑定到要显示的控件上。我试验的结果是基本上能稳定工作,很不错。该代码是.NET 1.0的,我移植到了.NET 2.0上(其实基本没做什么工作),原来的程序仅支持DataList控件和BaseDataList控件,由于我用GridViewx显示数据,所以我又改了一下,加上BaseDataBoundControl,然后就很好的工作了。

该控件能很好的工作,但是对数据的处理缺不太好,必须告诉该控件数据库连接字符串和查询数据的SQL语句,这样的做法我心存疑惑,觉得不妥,但是自己页没有很好的想法。是不是应该在改变分页的时候产生事件,让用户自己在事件处理程序中来显示数据呢?该控件对图形的页码显示也不支持。

网上有很多都是分页都是基于Atlas的,看来有必要学习一下。