2009-06-16 72 views
1

我想知道是否有可能在页面加载时显示modalpopup,并说该页面正在加载。我有一个从外部获取大量数据的页面,这意味着在实际填充任何控件之前需要一点时间。 我想要一个弹出窗口或类似的东西来告诉用户页面正在加载。ASP.net页面加载弹出框

我尝试这样做:

<ajax:ModalPopupExtender ID="mpeLoader" runat="server" TargetControlID="btnLoader" 
    PopupControlID="pnlLoading" BackgroundCssClass="modalBackground" /> 
<asp:Panel ID="pnlLoading" runat="server" Width="100px" Style="display: none;"> 
    <div class="detailspopup"> 
     <table> 
      <tr> 
       <td><asp:Image ID="imgLoader" runat="server" ImageUrl="~/App_Themes/Main/img/loading.gif" /></td> 
      </tr> 
      <tr> 
       <td>Loading...</td> 
      </tr> 
     </table> 
    </div> 
</asp:Panel> 

与虚拟按钮btnLoader让我访问演出,并从代码躲在后面。我一直在寻找页面生命周期中的.show方法,但我似乎无法找到一种方法让页面在加载时显示(并在加载完成时消失)。这在过滤数据时也是需要的,从而获得基于过滤器数据的新数据。

回答

1

很难说,最好的解决办法是什么没有更多的信息,但一个可能的方式去是让第一页只是作为含对话和一些JavaScript将与阿贾克斯加载实际的页面,“加载器”。

就像我之前写的那样,它非常依赖于你想要完成的事情:-)!

但是,如果您尝试加载的页面非常简单,像列表中没有任何状态/回传控件的一种方法是使用jQuery来创建“Loader”页面,如代码belov并使用UrlToLoad查询param动态加载哪个页面。

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 

    <script src="jquery.js" type="text/javascript"></script> 

    <script type="text/javascript"> 
     $(function() 
     { 
      $("form").load("<%= this.Request["UrlToLoad"] %> form"); 
     }); 
    </script> 
</head> 

<body> 
    <form runat="server">   
     Loading... 
    </form> 
</body> 

+0

,你会如何建议我做到这一点? 我是客户端脚本编程的一个小菜鸟。 – 2009-06-22 07:48:18

1

你有没有考虑使用jQuery?有一些优秀的模式对话框插件可用。我过去广泛使用了Eric Martin的SimpleModal,并且对此非常满意。它在显示对话框之前和之后都具有回调的钩子,因此您可以执行任何使用函数所需的检查。

使用jQuery的路线 - 你可以有包围所有仍在加载内容的DIV,并且已经变暗了/有显示你的页面加载“消息的模式对话框禁用。然后,您可以利用jQuery中的$document.ready()功能来确定页面何时完成加载。在这一点上,你可以删除的对话框,并在褪色的页面

+0

没有这仍然留下不显示,直到页面加载弹出的问题? 我应该将加载程序添加到主页面吗? – 2009-06-16 09:25:04

0

我所做的是使我们要在装入PreLoader.aspx页面,将“保持”,直到页面:

<script type="text/javascript" language="javascript"> 
window.onload=function() 
{ 
    $get("ctl00_ContentPlaceHolder1_btnNav",document).click(); 
    setTimeout('document.images["Loader"].src="App_Themes/Main/img/loading.gif"', 200);   
} 
</script> 

的按钮实际上使得传输

<asp:Label ID="lblLoading" runat="server" Text="Loading the requested page. Please wait ..." /> 
      <asp:Button ID="btnNav" Style="display: none;" runat="server" OnClick="NavTo" /> 

protected void NavTo(object sender, EventArgs e) 
    { 
     Response.Redirect(Request.QueryString["url"].ToString()); 
    } 

我喜欢这个,因为它可以为每个重数据页被重用......