Javascript 如何在一个线程中显示弹出窗口?

Javascript 如何在一个线程中显示弹出窗口?,javascript,asp.net,multithreading,Javascript,Asp.net,Multithreading,我有一个.NET LinkButton事件,它需要很多时间(数千个数据库操作)。 我尽量避免用户点击其他地方,直到我的活动完成。因此,我打开了一个模式弹出窗口,但我无法在事件结束时隐藏它 protected void ButtonLoadData_Click(object sender, EventArgs e) { ScriptManager.RegisterStartupScript(this.Page, Page.GetType(),"ex", "showPopup();", true

我有一个.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不运行。我怎样才能解决这个问题?任何建议

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

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


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

您是否在页面上使用部分更新面板?是的,这实际上是一个UserControl,它放在UpdatePanel中