日期:2014-05-17  浏览次数:20485 次

gridview分页显示性能是否较差?
gridview绑定数据源后可以启用分页,这个功能确实很方便。

不过也有人说,gridview绑定数据源后,即使你启用啦分页,也会将全部数据提取出来绑定到gridview,然后将分页需要显示的部分显示在界面上。例如gridview绑定啦一个5000条数据的表,每页显示20条。那么系统会将5000条数据全部取出来与dridview绑定,然后只显示其中的20条。

我不了解gridview的工作过程,如果真的是这样,那么gridview分页显示的性能还是会大打折扣的。现在很疑惑这个问题,所有请教各位啦。如果真的是这样,我就宁愿自己写分页不用系统带的了。

------解决方案--------------------
确实不够理想,而且会报异常

可以自己用存储过程实现,例如每页只显示多少条就只查询多少条

不然用自带的话,你里面如果有几W条数据的话,一下子查出来会影响性能的
------解决方案--------------------
建议使用分页存储过程
------解决方案--------------------
最好不要用自带的,给你个存储过程和自定义分页的代码
包括:
1.存储过程
2.自定义分页控件代码
3.数据操作函数
4.aspx里使用方法

地址:
http://www.wildren.cn/viewthread.php?tid=3477
------解决方案--------------------
http://www.webdiyer.com/AspNetPager/default.aspx
------解决方案--------------------
gridview功能很强大的,分页可以用它和数据源配合使用,效果还是很好的

并不是把所有的数据都查出来啊。你可以给ObjectDataSource配置一下一般小程序足够用

<asp:ObjectDataSource ID="ObjectMessageDataSource" runat="server" 
SelectMethod="GetReader" TypeName="Diy.Pager.Pager" 
SelectCountMethod="GetRecordCount" EnablePaging="true" 
onobjectcreated="ObjectDataSource1_ObjectCreated" 
>
</asp:ObjectDataSource>
解释SelectCountMethod方法GetRecordCount必须得到一个int类型的整数也就是总页数。
其实就这点特殊,别的和我们常用的参数一样两个方法的如下
public DbDataReader GetReader(int startRowIndex, int maximumRows)//获取数据两个参数开始行,结束行
public int GetRecordCount()//获取总数
------解决方案--------------------
引用楼主 great_king 的帖子:
gridview绑定数据源后可以启用分页,这个功能确实很方便。

不过也有人说,gridview绑定数据源后,即使你启用啦分页,也会将全部数据提取出来绑定到gridview,然后将分页需要显示的部分显示在界面上。例如gridview绑定啦一个5000条数据的表,每页显示20条。那么系统会将5000条数据全部取出来与dridview绑定,然后只显示其中的20条。

我不了解gridview的工作过程,如果真的是这样,那么gridview分页显示的性能还是会大打折…

------解决方案--------------------
哦 Sorry,我写错了,是GridView的数据源的 EnablePaging 属性来决定分页方式。

我使用 GridView 之类的数据绑定控件的时候,必然地使用数据源控件来处理原始数据。如果不使用数据源控件,那么你写的GridView控件应用的那种过时的程序写法,估计还要每次在页面回发时在page_load中不断地读取数据库绑定到控件吧?!这不但速度慢,而且还有逻辑错误。
------解决方案--------------------
是的,Gridview是将所有的数据都读出来分页,你可以用APSNETPAGER+存储过程。
------解决方案--------------------
探讨
哦 Sorry,我写错了,是GridView的数据源的 EnablePaging 属性来决定分页方式。

我使用 GridView 之类的数据绑定控件的时候,必然地使用数据源控件来处理原始数据。如果不使用数据源控件,那么你写的GridView控件应用的那种过时的程序写法,估计还要每次在页面回发时在page_load中不断地读取数据库绑定到控件吧?!这不但速度慢,而且还有逻辑错误。