仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 387|回复: 9
打印 上一主题 下一主题

[学习教程] ASP网站制作之DataGrid自界说分页

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-16 23:10:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件datagrid|分页ASP.NET中使用DataGrid的自界说分页功效和存储历程分离完成高效分页



ASP.Net中的DataGrid有内置分页功效,可是它的默许的分页体例效力是很低的,出格是在数据量很年夜的时分,用它内置的分页功效几近是不成能的事,由于它会把一切的数据从数据库读出来再举行分页,这类只拔取了一小部分而丢失落年夜部分的办法是不成往取的.

在最进的一个项目中由于一个办理页面要办理的数据量十分年夜,以是必需分页显现,而且不克不及用DataGrid的内置分页功效,因而本人完成分页.上面先容一下我在项目顶用到的分页办法.

固然显现控件仍是用DataGrid的,由于数据绑定很便利^_^.

要包管不传输冗余的数据,那末必需在数据库中数据读取时完成分页,数据库的分页操纵能够放在存储过程当中.看了CSDN的一篇Blog中讲了一个百万级数据分页的存储历程的完成(http://blog.csdn.net/wellknow/posts/55167.aspx,他的这个办法能够依据分歧情形举行得当的优化),依据他的办法,这里完成一个复杂的SQL语句来完成这里分页必要的存储历程。

createprocedureListProduct

(

@PageIndexint,--分页后必要页的序号

@PageSizeint,--一页的巨细

@ConditionSQLC查询前提的SQL语句

)

AS…详细代码就不写了(能够参考下面的链接).



详细的SQL语句以下:

SELECTTOP100*FROM(select*fromproductwhereproductid<200000)TWHERET.productidNOTIN

(SELECTTOP900productidFROM(selectproductidfromproductwhereproductid<200000)T1ORDERBYT1.productidasc)ORDERBYproductidasc

这条语句的从总的商品(30万)中掏出productid<200000(共20万),再按每页100的巨细分页,然后掏出第10页.



PublicDataTableListProduct(intpageIndex,intpageSize)

{

//ADO.net从数据库中掏出数据的代码就略过^_^.

}





用下面的存储历程读出的数据在DataGrid内里分页,必需把DataGrid的AllowPaging和AllowCustomPaging设置为true

protectedSystem.Web.UI.WebControls.DataGridProductGrid;

ProductGrid.AllowPaging=true;

ProductGrid.AllowCustomPaging=true;



然后在设置要显现的一页的巨细

ProductGrid.PageSize=100;//在显现的时分根据实践的数据显现。

设置一页巨细后,假如要让DataGrid实践分出页数来,还必需设置

ProductGrid.VirtualItemCount=GetProductCount();//GetProductCount()的功效是猎取满意前提的产物数量,这里的前提就是productid<200000.设置这项属性后,那末这个DataGrid的页数就是

VirtualItemCount/PageSize,也就是PageCount的值.不克不及对PageCount间接赋值,由于他是只读的属性.

这些属性设置好后再绑定命据:

ProductGrid.DataSource=ListProduct(1,ProductGrid.PageSize);//在Page_Load内里pageIndex为1,记着判别IsPostBack,在IsPostBack为false时实行这些代码

ProductGrid.DataBind();



如许数据绑定后就能够看到具有分页容貌的页面了.可是还不克不及真实的分页.要完成真实的分页,还必需完成上面的功效.



处置DataGrid的PageIndexChanged事务(处置用户新选中某页时的事务)

privatevoidProductGrid_PageIndexChanged(objectsource,System.Web.UI.WebControls.DataGridPageChangedEventArgse)

{

//假如在存储历程分页功效顶用1暗示第一页的序号的话那末这里必需用e.NewPageIndex+1作为pageIndex(假如选择了DataGrid上页号为3的页,那末e.NewPageIndex就为2),不然的话间接用e.NewPageIndex就能够了

ProductGrid.DataSource=ListProduct(e.NewPageIndex+1,ProductGrid.PageSize);//从数据库中读取新的数据

ProductGrid.DataBind();

//设置以后的Page序号值,假如不设置的话它是不会变得,如许会给用户形成曲解,觉得一切页的数据不异。

ProductGrid.CurrentPageIndex=e.NewPageIndex;

}



假如你处置了DataGrid的ItemCommand的事务的话,必需在ItemCommand事务处置代码后面加上这些代码:

if(e.Item.ItemType==ListItemType.Pager)

{

return;

}

由于当PageIndexChanged事务引发,也就是用户选则了别的一页时会先引发ItemCommand事务,假如不如许处置的话,大概会碰到一些意想不到的情形(假如你的确必要的话也能够下面这段代码,不外最好实践测试一下)。



全部历程完成后,再次扫瞄页面,以为速率真是快多了。



运转情况:

WinXPProSP1,SQLServer2000,.NetFramework1.1





</p>当然了,现在国内CRM厂商的产品与其说是CRM,但从至少从我的角度分析上来看,充其量只是一个大型的进销存而已了,了解尚浅,不够胆详评,这里只提技术问题
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-20 07:47:23 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
谁可相欹 该用户已被删除
板凳
发表于 2015-1-25 17:59:23 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
飘灵儿 该用户已被删除
地板
发表于 2015-1-25 21:47:55 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
只想知道 该用户已被删除
5#
发表于 2015-2-4 04:52:41 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
若天明 该用户已被删除
6#
发表于 2015-2-9 15:58:56 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
若相依 该用户已被删除
7#
发表于 2015-2-27 09:41:34 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
老尸 该用户已被删除
8#
发表于 2015-3-9 00:17:09 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
活着的死人 该用户已被删除
9#
发表于 2015-3-16 18:58:21 | 只看该作者
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。
变相怪杰 该用户已被删除
10#
发表于 2015-3-22 23:53:16 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 09:26

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表