我想知道是否有可能在页面加载时显示modalpopup,说该页面正在加载。我有一个页面从外部源获取大量数据,这意味着在实际填充任何控件之前需要一些时间。 我希望有一个弹出窗口或类似的东西告诉用户页面正在加载。
我试过了:
<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方法,但我似乎无法找到一种方法来在页面加载时显示poopup(并在加载完成时消失)。在过滤数据时也需要这样做,从而根据过滤数据获取新数据。
答案 0 :(得分:1)
很难说没有更多信息的最佳解决方案是什么,但一种可能的方法是让第一页充当包含对话框的“加载器”和一些将用ajax加载实际页面的javascript。 / p>
就像我之前写的那样,它很大程度上取决于你想要完成的事情:-)!
但是使用jQuery的一种方法是,如果您尝试加载的页面非常简单,就像没有任何状态/回发控件的列表一样,创建一个“Loader”页面就像代码belov并使用 UrlToLoad 查询动态加载页面的参数。
<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>
答案 1 :(得分:1)
你考虑过使用jQuery吗?有一些很好的模态对话插件可用。我过去曾经广泛使用过Eric Martin的SimpleModal,对此非常满意。它在显示对话框之前和之后都有回调挂钩,因此您可以执行使用函数所需的任何检查。
使用jQuery路由 - 您可以拥有一个div,它围绕所有仍在加载的内容,并且通过显示“页面加载”消息的模式对话框来调暗/禁用。然后,您可以使用jQuery中的$document.ready()功能来确定页面何时完成加载。此时,您可以删除对话框并淡入页面。
答案 2 :(得分: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());
}
我喜欢这个,因为它可以重复用于每个繁重的数据页面......