海量(大量)数据gridview显示高效率分页实现方法

海量(大量)数据gridview显示高效率分页实现方法

ID:1974739

大小:36.00 KB

页数:7页

时间:2017-11-14

海量(大量)数据gridview显示高效率分页实现方法_第1页
海量(大量)数据gridview显示高效率分页实现方法_第2页
海量(大量)数据gridview显示高效率分页实现方法_第3页
海量(大量)数据gridview显示高效率分页实现方法_第4页
海量(大量)数据gridview显示高效率分页实现方法_第5页
资源描述:

《海量(大量)数据gridview显示高效率分页实现方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、问题:     GridView显示海量数据时效率极其低,每次要从数据库从取出海量数据,这明显不现实。 解决方案:      显示多少,就从数据库中读取多少数据,即每次取GridView显示的一个页面数据,点击下一页是,再取下一页相应的数据。 真的是很简单,但如果对asp.net不熟悉的人来说,还是有点难度。就比如说:当页面刷新时,怎样使一个变量的值保持不变呢?很晕是吧 下面我们说分析实现方法:1、刷新页面,保持变量值不变 先讲怎样在刷新页面是使一个变量值保持不变,以前我都采用页面传值法,总觉得有点怪,本来就是本页的数据还要通过页面传值来保存。后来在网上发现VewState这东

2、东,有点像Session,用法基本上一样。他们的区别是:Session是在页面之间,而ViewState是在它自己的页面保持一个值。用法:       ViewState["PageCounts"]=3;        下次要用时直接取出来就OK了。 2、GridView海量数据高效分页实现代码 下面代码来自互联网   constintPageSize=20;//定义每页显示记录  intPageCount,RecCount,CurrentPage,Pages,JumpPage;//定义几个保存分页参数变量   privatevoidPage_Load(objectsender

3、,System.EventArgse)  {   if(!IsPostBack)   {    RecCount=Calc();//通过Calc()函数获取总记录数    PageCount=RecCount/PageSize+OverPage();   //计算总页数(加上OverPage()函数防止有余数造成显示数据不完整)    ViewState["PageCounts"]=RecCount/PageSize-ModPage();     //保存总页参数到ViewState(减去ModPage()函数防止SQL语句执行时溢出查询范围,可以用存储过程分页算法来理解这句)

4、    ViewState["PageIndex"]=0;//保存一个为0的页面索引值到ViewState    ViewState["JumpPages"]=PageCount;       //保存PageCount到ViewState,跳页时判断用户输入数是否超出页码范围    //显示LPageCount、LRecordCount的状态    LPageCount.Text=PageCount.ToString();    LRecordCount.Text=RecCount.ToString();    //判断跳页文本框失效    if(RecCount<=20) 

5、    gotoPage.Enabled=false;    TDataBind();//调用数据绑定函数TDataBind()进行数据绑定运算   }  }  //计算余页  publicintOverPage()  {   intpages=0;   if(RecCount%PageSize!=0)    pages=1;   else    pages=0;   returnpages;  }     //计算余页,防止SQL语句执行时溢出查询范围  publicintModPage()  {   intpages=0;   if(RecCount%PageSize==0

6、&&RecCount!=0)    pages=1;   else    pages=0;   returnpages;  }       /*  *计算总记录的静态函数  *本人在这里使用静态函数的理由是:如果引用的是静态数据或静态函数,连接器会优化生成代码,去掉动态重定位项(对海量数据表分页效果更明显)。  *希望大家给予意见、如有不正确的地方望指正。  */  publicstaticintCalc()//Calc()函数获取总记录数  {   intRecordCount=0;   SqlCommandMyCmd=newSqlCommand("selectcount(*

7、)ascofromredheadedfile",MyCon());   SqlDataReaderdr=MyCmd.ExecuteReader();   if(dr.Read())    RecordCount=Int32.Parse(dr["co"].ToString());   MyCmd.Connection.Close();   returnRecordCount;  }       //数据库连接语句(从Web.Config中获取)  publicstaticSqlConnecti

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。