在数据还没有读完之前出现“正在读取数据....,请稍候”如何实现~~~~
我现在做了一个查询页面A.aspx(是被另一个带有框架结构的页面b.aspx调用),A.aspx分三块,上面是查询条件,中间是显示数据的表格(表头固定),下面是数据统计。因为需要查找的数据量多,我想在显示数据的表格处,当每次点击查询按钮都出现“正在读取数据...请稍候”,请问该如何实现呢?最好有代码,不胜感谢! --------------------编程问答-------------------- using System;using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Threading;
public partial class _Default : System.Web.UI.Page
{
private AsyncDelegateGetDataSet dgs;
private int i = 0;
protected void Page_Load(object sender, EventArgs e)
{
PageAsyncTask task = new PageAsyncTask(
new BeginEventHandler(BeginAsyncOperation),
new EndEventHandler(EndAsyncOperation),
new EndEventHandler(TimeoutAsyncOperation),
null
);
RegisterAsyncTask(task);
WritePress();
}
public void BindData()
{
dsOrders DSO = new dsOrders();
DSO.Orders.AddOrdersRow("zp", "1", DateTime.Now, DateTime.Now, DateTime.Now, "s", "t", "sz");
GridView1.DataSource = DSO;
GridView1.DataBind();
Thread.Sleep(3000);
}
IAsyncResult BeginAsyncOperation(object sender, EventArgs e,
AsyncCallback cb, object state)
{
dgs=new AsyncDelegateGetDataSet(BindData);
return dgs.BeginInvoke(cb, state);
}
void EndAsyncOperation(IAsyncResult ar)
{
Response.Write("<script>document.getElementById('s" + (i - 1) + "').style.display ='none';</script>");
dgs.EndInvoke(ar);
}
void TimeoutAsyncOperation(IAsyncResult ar)
{ }
private void WritePress()
{
while (i<3)
{
Response.Write("<table id='s" + i + "' width='100%'><tr ><td></td><td align=center >正在读取数据请稍候.</td></tr></table>");
if (i > 0)
{
Response.Write("<script>document.getElementById('s" + (i - 1) + "').style.display ='none';</script>");
}
i = i + 1;
Response.Flush();
}
}
public delegate void AsyncDelegateGetDataSet --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 关注中。。。
我也想知道,有什么好方法 --------------------编程问答-------------------- 给你代码
--------------------编程问答-------------------- 貌似应该有等待时间的控件~ --------------------编程问答-------------------- 1.点击Button的时候,将数据区控件的innerHTML,设置为"数据加载中,请等待"
<asp:UpdatePanel ID="upl" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<div class="wopen2">
<div align="center" class="login font_04">数据加载中,请等待……</div>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</asp:UpdatePanel>
加载完成后,用数据填充数据区控件的innerHTML(ajax常用这种做法)
2.如果是服务器控件,就在数据区做两个控件,点击的时候消息控件显示,数据控件隐藏,数据获取完成后,消息控件隐藏,数据控件显示
3.如果数据区域的位置是固定的,(高度,或者宽度)还可以设置一个类似于进度的Div来操作 --------------------编程问答-------------------- 非常感谢大家,我等一下试试看,欢迎大家发表自己的看法 --------------------编程问答--------------------
vs2005的可以用吗? --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 可以只用用.NET的ajax控件,或者直接用AjaxPro等。 --------------------编程问答-------------------- 是直接将这代码放到A.aspx里面吗? --------------------编程问答--------------------
是直接将这代码放到A.aspx里面吗? --------------------编程问答--------------------
我把代码放到A.aspx里试过了,不行 --------------------编程问答-------------------- 这个控件应该可以的 --------------------编程问答-------------------- ajax控件
UpdateProgress
配合UpdatePanel使用. --------------------编程问答-------------------- http://www.ajaxasp.net.cn/Demos/UpdateProgress/UpdateProgress.aspx --------------------编程问答-------------------- 好几种方法可以实现
1、javascript
2、ajax
3、callback --------------------编程问答-------------------- 能给出详细的例子吗? --------------------编程问答-------------------- 我用Flash实现的,在页面里加一个DIV,里面插入Flash,在加载页面的前一个事件里,把div显示出来,在加载页面的最后面加上js代码,把div隐藏,很简单的方法 --------------------编程问答-------------------- 顶 --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 见议最好先看一下,asp.net的生命周期。 --------------------编程问答-------------------- <html>
……
<td>
<div id="LayerShowLoading" style="Z-INDEX: 1; VISIBILITY: hidden; WIDTH: 100%; POSITION: absolute; TOP: 0px; HEIGHT: 100%">
<table height="450" width="100%">
<tr>
<td align="center">
<OBJECT VIEWASTEXT>
<embed src="../images/swf/loading.swf" quality="high" type="application/x-shockwave-flash"
width="200" height="80"> </embed>
</OBJECT>
</td>
</tr>
</table>
</div>
</td>
……
</table>
</form>
<script language="javascript">
<!--
document.getElementById("LayerShowLoading").style.visibility="hidden";
//-->
</script>
</body>
</html>
页面加载时
this.imgBtnSearch.Attributes.Add("onclick","MM_showHideLayers('LayerShowLoading','','show');"); --------------------编程问答-------------------- 我在VS2005里找不到上面各位说的控件,直接COPY进去又出现错误! --------------------编程问答--------------------
你好!我的数据区域是用一个DIV来固定的,请问用DIV如何实现这个功能呢?谢谢 --------------------编程问答-------------------- 關注 --------------------编程问答-------------------- 呃,我用的2003 --------------------编程问答-------------------- 应该是标准问题吧 --------------------编程问答-------------------- ajax我在VS2005里写入<asp:UpdatePanel 时,出错,未知的服务器标记 --------------------编程问答-------------------- 顶 学习学习 --------------------编程问答--------------------
你没安装这个组件吧,在2005里面要自己安装才有的
补充:.NET技术 , ASP.NET