问题描述
asp.netRepeater1绑定显示大量数据时,显示"正在加载数据,请稍后"的提示
解决方案
解决方案二:
为什么不分页?
解决方案三:
在实际中我们经常遇到表里的记录数非常庞大(数万至数百万),而一次只显示几十条数据的情况,如果我们直接用下面的SQL语句查询并填充到DataTable的话,将是一个非常恐怖的事情(假设UserInfo有几百万乃至上亿用户数据):Select*fromUserInfo初学者在使用ADO.NET时可能会犯两个错误:(1)在显示数据时:在查询时会将所有满足条件的数据全部填充到DataTable中,然后再在程序中根据条件显示其中一部分数据。(2)在统计数据时:在获取符合条件的记录条数时也是通过将所有满足条件的数据全部填充到DataTable中,然后通过DataTable实例的Rows.Count属性来获取记录条数。上面的做法效率是极低的(在数据量较小并且在本机测试的时候效果不太明显),如果数据库中存在的数据量太大,很可能造成一个页面长久无法显示(笔者曾经优化过一个网站,数据库中有个表有600万条记录,开发人员就是通过上面的错误办法来处理的,经过网站首页15分钟都无法显示)。在显示数据时应该用分页查询。分页查询就是根据需要每次只返回所需要的数据,而不用每次都从数据库中全部把数据提取出来,这样可以降低程序与数据库之间的数据传送量,并且还可以提高程序的性能。
解决方案四:
ADO.NET是对MicrosoftActiveXDataObjects(ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO.NET组件,它可以是基于一个MicrosoftVisualStudio的解决方案,也可以是任何运行在其它平台上的任何应用程序。以前做数据库访问的时候,需要一直与数据库保持连接,直到获取完所有满足需要的数据之后才会断开数据库连接,这种数据库访问方式称之为连接式数据访问技术。相比于以前的连接式数据访问技术,ADO.NET除了提供连接式数据访问技术之外,还提供了另一种断开式解决方案,那就是在内存中模拟一个数据库,也就是内存中的数据库。我们知道在实际的数据库技术中,每个数据库就是一个业务逻辑单元,一般来说这个数据库包含了实现一个应用软件或者一个网站所需要的全部数据。本篇中还讲述了自定义分页在数据库层的理论。
解决方案五:
分页我就不说了,至于等待提示,可以使用iframe或ajax来做,先载入主页面然后在这个主页面中写脚本来检测iframe或某个元素的值,当这个元素的值满足某一条件表示已加载完成.然后去掉等待界面,显示数据.
解决方案六:
微软的AJAX中的UpdateProgress控件就是干这个事的!!
解决方案七:
前两天弄在网上找了一个很好的例子,不敢独享,特拿来和LZ分享在HTML页加(任何地方)<divid="divWaiting"style="display:none;z-index:1100;left:25%;right:25%;position:absolute;text-align:center;width:50%;height:50px;border-right:#0099001pxsolid;border-top:#0099001pxsolid;border-left:#0099001pxsolid;border-bottom:#0099001pxsolid;background-color:#f9fff6;left:expression((this.offsetParent.clientWidth/2)-(this.clientWidth/2)+this.offsetParent.scrollLeft);top:expression((this.offsetParent.clientHeight/2)-(this.clientHeight/2)+this.offsetParent.scrollTop);"><br>Thesystemisdealingwithyourrequest,pleasewaiting</div><divid="divDisable"style="display:none;width:expression(document.body.offsetWidth);height:expression(document.body.offsetHeight);z-index:1000;position:absolute;left:0px;top:0px;filter:alpha(opacity=50);background-color:White"></div>点击按钮的操作:(把下面的两句加载到按钮的JS脚本里)document.getElementById("divWaiting").style.display="";document.getElementById("divDisable").style.display="";其他处理:(这个写在页面就可以了)functionChangeDiv(){document.getElementById("divDisable").style.height=document.body.offsetHeight+document.body.scrollTop;}window.onscroll=ChangeDiv;
解决方案八:
楼是说的UpdateProgress也不错
解决方案九:
<body><formid="form1"runat="server"><asp:ScriptManagerID="ScriptManager1"runat="server"></asp:ScriptManager><asp:UpdatePanelID="UpdatePanel1"runat="server"><Triggers><asp:AsyncPostBackTriggerControlID="Button1"EventName="Click"/></Triggers><ContentTemplate><asp:LabelID="Label1"runat="server"Text="Label"></asp:Label></ContentTemplate></asp:UpdatePanel><asp:UpdateProgressID="UpdateProgress1"runat="server"><ProgressTemplate><spanstyle="font-size:12px">数据加载中......</span></ProgressTemplate></asp:UpdateProgress><asp:ButtonID="Button1"runat="server"Text="Button"Width="143px"OnClick="Button1_Click"/></form></body>updateprogress和updatepanel共同使用,不用对updateprogress进行任何设置,
解决方案十:
如果是页面第一次显示时绑定数据源,那用UpdatePanel或UpdateProgress好像没什么用吧?那个漫长的绑定过程是在服务器端进行的,即使用上UpdatePanel,第一次显示时还是得进行绑定。这东西其实用Silverlight做最容易。如果用ajax实现,你也得用client端的js异步访问。。。
解决方案十一:
Ajax的UpdateProgress……<asp:UpdateProgressID="up1"runat="server"><ProgressTemplate>正在加载数据,请稍后……</ProgressTemplate></UpdateProgress>……需要显示信息的页面LOAD事件中if(!IsPostBack){div1.Style.Add("display","none");//假设Repeater1放在div1中System.Threading.Thread.Sleep(10000);//进程休息10秒div1.Style.Add("display","block");//假设Repeater1放在div1中}
解决方案十二:
楼上的都给出了,8楼也贴出代码了,很全.
解决方案十三:
mark
解决方案十四:
<asp:ScriptManagerID="ScriptManager1"runat="server"></asp:ScriptManager><asp:UpdatePanelID="UpdatePanel1"runat="server"><Triggers><asp:AsyncPostBackTriggerControlID="Button1"EventName="Click"/></Triggers><ContentTemplate><asp:LabelID="Label1"runat="server"Text="Label"></asp:Label></ContentTemplate></asp:UpdatePanel><asp:UpdateProgressID="UpdateProgress1"runat="server"><ProgressTemplate><spanstyle="font-size:12px">数据更新中......</span></ProgressTemplate></asp:UpdateProgress><asp:ButtonID="Button1"runat="server"Text="Button"Width="143px"OnClick="Button1_Click"/>或<asp:updateprogressID="UpdateProgress1"runat="server"><progresstemplate><spanlang="zh-cn">数据正在读取中..请稍后!!!</span><inputtype="button"value="取消"onclick="stop();"/></progresstemplate></asp:updateprogress>
解决方案十五:
用js不刷新分页!
解决方案:
顺便借问一下:那个全选按钮protectedvoidCheckBox2_CheckedChanged(objectsender,EventArgse){for(inti=0;i<=GridView1.Rows.Count-1;i++){CheckBoxcbox=(CheckBox)(GridView1.Rows[i].FindControl("CheckBox1"));if(CheckBox2.Checked==true){cbox.Checked=true;}else{cbox.Checked=false;}}}
如果分了页怎么用才只全选当前页的项呢?慢慢想总能想出办法。但是我想知道有没有更有效的方法。谢谢!
解决方案:
难道你不用分页么??用selecttop分页啊
解决方案:
结贴率不是一般的低啊。
解决方案:
要支持下微软...
解决方案: