1

我有一个 .NET LinkBut​​ton 事件,需要花费大量时间(数以千计的数据库操作)。在我的活动完成之前,我会尽量避免用户点击其他地方。所以我为此打开了一个模式弹出窗口,但我无法在我的活动结束时隐藏它。

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 不运行。我怎么解决这个问题?有什么建议么

4

1 回答 1

0

为了理解为什么会出现这个问题,您必须了解 HTTP 协议的基础知识。HTTP 是一种无状态协议,这意味着一旦客户端(浏览器)向服务器请求页面并在页面由服务器交付之后。客户端和服务器彼此忘记了。

在您的代码中,您尝试完成三个步骤。第一步是在用户单击页面上的 LinkBut​​ton 并向服务器发送请求以执行特定操作时执行。作为响应的服务器显示一个模式弹出窗口并启动 1000 次数据库操作。这就是问题发生的地方,当数据库操作完成时,服务器和客户端之间的连接已经结束。因此,当服务器尝试执行第三个操作时,它会静默失败。

我建议使用 UpdateProgress 控件向用户显示正在执行的某些操作。本msdn教程将帮助您了解 UpdateProgress 控件。

于 2013-04-03T07:19:58.400 回答