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