|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
asp是基于web的一种编程技术,可以说是cgi的一种。它可以完成以往cgi程序的所有功能,如计数器、留言簿、公告板、聊天室等等。datagrid|数据 在Asp.Net中,咱们利用最多的生怕就是DataGrid列表控件了。这个控件的功效的却十分壮大,也十分好用。它不仅可以完成恣意的格局化选择,并且还可以静态停止分页、排序、添加按钮、静态编纂等功效。可以说,DataGrid控件已完成了咱们需求的大局部功效。
DataGrid控件需求经由过程ViewState来保留控件的形态的,假如咱们封闭了ViewState,即在HTML代码中利用了EnableViewState="False"属性,那末,下面的一切有效的功效咱们将没法利用。
而ViewState的弱点也是很大的,就是DataGrid会把一切的数据源中的数据寄存到ViewState中。我实验了一下,一个包含5000笔记录的数据库,假如不在数据库端掌握数据量的话,直接利用Select * From TableName如许的Sql语句绑定命据的话,一个Asp.Net静态网页(唯一一个DataGrid控件的测试页)的ViewState有60k之多。而如许一个网页放到公共Web网站,迟缓的网页下载速度将会使大局部人望而生畏,利用56k猫上彀的人就更不要提了,基本没法会见如许的网页,守候的工夫将不成忍耐。
DataGrid保留在ViewState中的数据分为两个局部,一局部是保留索援用的,就是DataKeys和DataItems如许的属性利用的数据,咱们把它称之为索引数据。还有一局部是DataGrid中数据源的内容,咱们称之为列表数据。
咱们假如把实践上无用的列表数据从ViewState中去除,如许可以大大减小页面ViewState的数据巨细,利用DataGrid时ViewState数据量太大的基本缘由就是列表数据寄存在ViewState中。
DataGrid的外部任务流程:在数据绑定初始化的时分,生成了一个叫DataGridTable的控件对象,这个对象是承继System.Web.UI.WebControls.Table控件的。并且这个对象是最早到场(利用Controls.Add()办法)DataGrid中的。并且ViewState中的DataGrid列表数据也是这个控件到场到DataGrid中的。实践上,ViewState中的DataGrid的单位格中的数据实践上是System.Web.UI.WebControls.Table控件的SaveViewState()办法给加出来的。这些数据良多情形下是不需求的。
?
处理办法:在数据绑定的时分,设置DataGrid中DataGridTable控件的EnableViewState属性为False就能够了。
?
起首在页面初始化中的InitializeComponent()办法内到场事务的拜托:
private void InitializeComponent()
{
??? this.myDataGrid.ItemDataBound +=
new DataGridItemEventHandler(this.myDataGrid_ItemDataBound);
}
然后在myDataGrid_ItemDataBound办法内到场掌握代码:
private void myDataGrid_ItemDataBound(object sender, DataGridItemEventArgs e)
{
??? myDataGrid.Controls[0].EnableViewState = false;
}
利用DataGrid时,把下面的代码到场,将减小利用DataGrid时ViewState的90%的数据量。并且,DataGrid中很多利用ViewState的功效涓滴很多,岂不是一举两得?
?
固然,网页履行第一次时,DataGrid的内容正常显示,而利用了下面的去除ViewState办法后,页面假如回发处置,DataGrid的内容将会消逝。我才分明DataGrid内DataGridTable把数据寄存在ViewState内的意图。微软的设计长短常严谨的,他们的意图就是当利用Page.IsPostBack属性时,仅会见一次数据库就能够永世坚持DataGrid的数据(在不分开此页面的情形下),数据寄存的地址就是页面的ViewState中。如许页面回发后,DataGrid就能够从ViewState中从头生成DataGrid的显示内容,无需会见数据库。所以说微软以就义客户下载的速度(ViewState数据量)来包管办事器的资本,人人都晓得频仍会见数据库对办事器的资本损耗很大。
所以,利用下面削减DataGrid的ViewState数据的方法是可行的,然而必需使一切的页面回发处置都必需停止数据绑定,不然DataGrid没法取得数据库内容,也没法取得ViewState中保留的数据,那末回发后DataGrid将没法显示任何内容。
?
总结:利用下面削减ViewState的举措可以大大加速客户真个下载显示速度,然而频仍的数据库会见将加大办事器的压力;利用ViewState可以加重办事器的压力,然而又加大了客户真个下载工夫,它们是相互抵触的。所以开辟者要依据实践情形选择是不是利用DataGrid.Controls[0].EnableViewState=false;的方法,若何选择,人人请本人推敲。
</p> Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。 |
|