我有一个带有gridview的表单,它绑定到一个复杂的存储过程(财务数据)。此查询大约需要3分钟才能运行并加载gridview。用户不耐烦并反复点击“搜索”,这只会让事情变得更糟。
作为临时解决方案,我想展示一个进度条,我找到了一个使用ASP.NET AJAX ModalPopupExtender的解决方案。
这是我将扩展器添加到页面的代码:
<ajaxToolkit:ModalPopupExtender ID="mdlPopup" runat="server" TargetControlID="Button1"
PopupControlID="pnlPopup" BackgroundCssClass="modalBackground" />
<asp:Panel ID="pnlPopup" runat="server" CssClass="updateProgress" style="display: none">
<div align="center" style="margin-top: 13px;">
<img src="../images/progress.gif" alt="Progress" />
<span class="updateProgressMessage">Loading ...</span>
</div>
</asp:Panel>
这是按钮点击事件的非常简单的代码:
protected void Button1_Click(object sender, EventArgs e)
{
gvInvoice.DataBind();
}
问题是,当我单击“搜索”按钮时,会弹出模式对话框,但永远不会调用Databind()方法。我尝试使用mdlPopup.Show()
,但没有显示对话框,只是运行Databind()
。
我错过了什么?如何确保出现模态对话框,数据绑定运行,模态对话框随后消失?
答案 0 :(得分:1)
我认为你需要做的是将对话框的显示和数据提取的绑定分开。
我可能会使用这样的方法解决问题:
您可以在线程启动时添加其他检查/条件,以便在用户多次按下搜索时不会启动太多线程。即如果他们没有更改搜索条件,则不要开始新搜索,只是继续轮询。
答案 1 :(得分:0)
看起来你试图显示整页回复的进度面板(模态弹出窗口)? 如果搜索操作在updatepanel
中完成,mdlPopup.Show()将起作用在您的方案中,请尝试此操作 - 步骤1,将modalpopupextender的TargetControlID设置为虚拟隐藏控件 - 第2步,添加了javascript调用,显示了modalpopup $ find('mdlPopup')。show();在搜索按钮的onclient事件的回拨之前(就像在回发之前添加验证一样)
詹姆斯