当前位置:编程学习 > C#/ASP.NET >>

在数据还没有读完之前出现“正在读取数据....,请稍候”如何实现~~~~

我现在做了一个查询页面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 --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 关注中。。。
我也想知道,有什么好方法 --------------------编程问答-------------------- 给你代码

 <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>
--------------------编程问答-------------------- 貌似应该有等待时间的控件~ --------------------编程问答-------------------- 1.点击Button的时候,将数据区控件的innerHTML,设置为"数据加载中,请等待"
加载完成后,用数据填充数据区控件的innerHTML(ajax常用这种做法)

2.如果是服务器控件,就在数据区做两个控件,点击的时候消息控件显示,数据控件隐藏,数据获取完成后,消息控件隐藏,数据控件显示

3.如果数据区域的位置是固定的,(高度,或者宽度)还可以设置一个类似于进度的Div来操作 --------------------编程问答-------------------- 非常感谢大家,我等一下试试看,欢迎大家发表自己的看法 --------------------编程问答--------------------
引用 4 楼 jiang_jiajia10 的回复:
给你代码 

HTML code
 <asp:UpdatePanel ID="upl" runat="server" UpdateMode="Conditional">
                        <ContentTemplate>
                           <asp:UpdateProgress ID="UpdateProgress1" runat="server">
                                <ProgressTemplate>
                                  <div class="wopen2">
                                        <div align="center" class="lo…


vs2005的可以用吗? --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 可以只用用.NET的ajax控件,或者直接用AjaxPro等。 --------------------编程问答-------------------- 是直接将这代码放到A.aspx里面吗? --------------------编程问答--------------------
引用 4 楼 jiang_jiajia10 的回复:
给你代码 

HTML code
 <asp:UpdatePanel ID="upl" runat="server" UpdateMode="Conditional">
                        <ContentTemplate>
                           <asp:UpdateProgress ID="UpdateProgress1" runat="server">
                                <ProgressTemplate>
                                  <div class="wopen2">
                                        <div align="center" class="lo…



是直接将这代码放到A.aspx里面吗? --------------------编程问答--------------------
引用 4 楼 jiang_jiajia10 的回复:
给你代码 

HTML code
 <asp:UpdatePanel ID="upl" runat="server" UpdateMode="Conditional">
                        <ContentTemplate>
                           <asp:UpdateProgress ID="UpdateProgress1" runat="server">
                                <ProgressTemplate>
                                  <div class="wopen2">
                                        <div align="center" class="lo…



我把代码放到A.aspx里试过了,不行 --------------------编程问答-------------------- 这个控件应该可以的
引用 4 楼 jiang_jiajia10 的回复:
给你代码 

HTML code
 <asp:UpdatePanel ID="upl" runat="server" UpdateMode="Conditional">
                        <ContentTemplate>
                           <asp:UpdateProgress ID="UpdateProgress1" runat="server">
                                <ProgressTemplate>
                                  <div class="wopen2">
                                        <div align="center" class="lo…
--------------------编程问答-------------------- 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进去又出现错误! --------------------编程问答--------------------
引用 6 楼 Fibona 的回复:
1.点击Button的时候,将数据区控件的innerHTML,设置为"数据加载中,请等待" 
加载完成后,用数据填充数据区控件的innerHTML(ajax常用这种做法) 

2.如果是服务器控件,就在数据区做两个控件,点击的时候消息控件显示,数据控件隐藏,数据获取完成后,消息控件隐藏,数据控件显示 

3.如果数据区域的位置是固定的,(高度,或者宽度)还可以设置一个类似于进度的Div来操作


你好!我的数据区域是用一个DIV来固定的,请问用DIV如何实现这个功能呢?谢谢 --------------------编程问答-------------------- 關注 --------------------编程问答-------------------- 呃,我用的2003 --------------------编程问答-------------------- 应该是标准问题吧 --------------------编程问答-------------------- ajax我在VS2005里写入<asp:UpdatePanel 时,出错,未知的服务器标记 --------------------编程问答-------------------- 顶 学习学习 --------------------编程问答--------------------
引用 29 楼 CSJ04 的回复:
ajax我在VS2005里写入 <asp:UpdatePanel 时,出错,未知的服务器标记


你没安装这个组件吧,在2005里面要自己安装才有的
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,