我有一个.NET LinkButton事件需要花费很多时间(成千上万的数据库操作)。 我试图避免用户点击其他地方,直到我的活动结束。所以我为此打开了一个模态弹出窗口,但我无法在活动结束时隐藏它。
protected void ButtonLoadData_Click(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(),"ex", "showPopup();", true);
//LOTS OF OPERATIONS
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(),"ex", "hidePopup();", true);
第一个javascript运行(打开我的加载弹出窗口),操作在后台执行,但第二个javascript不运行。我怎么解决这个问题?任何建议
答案 0 :(得分:0)
为了理解您遇到此问题的原因,您必须了解HTTP协议的基础知识。 HTTP是无状态协议,这意味着一旦客户端(浏览器)从服务器请求页面并且在服务器传递页面之后。客户端和服务器互相忘记了。
在您的代码中,您尝试完成三个步骤。当用户单击页面上的LinkButton并向服务器发送请求以执行特定操作时,将执行第一步。响应中的服务器显示模式弹出窗口并启动1000的数据库操作。这就是问题发生的地方,到时,数据库操作已经完成,服务器和客户端之间的连接已经结束。因此,当服务器尝试执行第三个操作时,它会以静默方式失败。
我建议使用UpdateProgress控件向用户显示正在执行某些操作。 msdn的这个tutorial将帮助您理解UpdateProgress控件。