【问题标题】:ASP.NET Refresh Parent Page after Closing Modal Dialog Window关闭模态对话框窗口后 ASP.NET 刷新父页面
【发布时间】:2013-01-24 15:30:46
【问题描述】:

我有一个启动模式对话框窗口的 ASP.NET 页面:

Dim sURL As String = System.Configuration.ConfigurationManager.AppSettings("PAYORS_Path") & "PayorCopy.aspx"
    lnkCopy.Attributes.Add("onclick", "javascript:window.showModalDialog('" & sURL & "',null,'status:no;dialogWidth:375px;dialogHeight:550px;dialogHide:true;help:no;scroll:yes;center:yes');return false;")

用户可以在此模式窗口中创建新项目。当用户单击关闭按钮时,模式对话框窗口已成功关闭,但创建的新项目不会出现在父页面上。当模式窗口关闭时,我希望父页面刷新以显示用户创建的新项目。目前:

Private Sub btnClose_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnClose.Click
    Dim strjscript As String = "<script language='javascript'>self.close();</script>"
    LtClose.Text = strjscript
End Sub

我已尝试添加到此脚本中:

window.opener.location.reload(true);

但是当我测试时,我收到一条错误消息“无法获取属性‘位置’的值:对象为空或未定义。”

任何帮助将不胜感激!

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    不要使用旧的模态对话框窗口,试试jQuery Dialog,因为它的行为就像一个模态但让你在同一个窗口中。因此,它很容易用以下代码刷新:

    location.reload(true);
    

    有关更多信息,请在 SO 上查看this 问题。

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      那是因为没有“开场白”:) Location 是窗口对象的方法,因此在大多数情况下,您甚至可以将其视为全局方法。其中任何一个都应该工作:

      window.location.reload(true);
      

      或:

      location.reload(true);
      

      编辑 是的,我刚刚注意到你把那个脚本放在哪里了。如果它在模态框内的点击句柄中。那么“窗口”确实是一个不同的——毕竟它是模态的!尝试在代码打开模式窗口之后直接添加它 - 脚本执行将被阻止,直到模式返回,所以你可以这样:

      var shouldReloadPage = window.showModalDialog('" & sURL & "',null,'status:no;dialogWidth:375px;dialogHeight:550px;dialogHide:true;help:no;scroll:yes;center:yes');
      if(shouldReloadPage){
      window.location.reload(true);
      }
      return false;
      

      这仍然在单击处理程序 ofc 中,只是显示在代码块中以便于阅读。

      【讨论】:

      • 这消除了我得到的错误,但父页面仍然没有刷新。
      • 查看上面的编辑...您应该在实际页面的代码中重新加载页面,最好在打开模式后直接放置。
      • 我添加了:lnkCopy.Attributes.Add("onclick", "javascript:var(shouldReloadPage = window.showModalDialog('" & sURL & "',null,'status:no;dialogWidth:375px ;dialogHeight:550px;dialogHide:true;help:no;scroll:yes;center:yes');if(shouldReloadPage){window.location.reload(true);}return false;)" 现在模态对话框窗口赢了根本不启动 - 当我点击时没有任何反应。
      • 在第一行的 var 之后有一个额外的括号(并且可能在最后一个括号,就在 'return false;' 之后).. 除此之外,请始终检查浏览器控制台以获取有关错误的提示。跨度>
      • 啊,是的。不知道这是怎么发生的,但我已更新为: lnkCopy.Attributes.Add("onclick", "javascript:var shouldReloadPage = window.showModalDialog('" & sURL & "',null,'status:no;dialogWidth:375px ;dialogHeight:550px;dialogHide:true;help:no;scroll:yes;center:yes');if(shouldReloadPage){window.location.reload(true);}return false;") 模态对话窗口现在成功启动.但是,当我关闭它时,父页面不会刷新。
      猜你喜欢
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多