我有一个启动模态对话框窗口的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);
但是当我测试时,我收到一条错误,上面写着“无法获取属性'位置'的值:对象为null或未定义。”
非常感谢任何帮助!
答案 0 :(得分:0)
那是因为没有'开启者':) 位置是窗口对象的方法,因此您甚至可以将其视为全局大多数情况。任何这些应该工作:
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中,只是在代码块中显示以便于阅读。
答案 1 :(得分:0)
不要使用旧的模态对话框窗口,而是尝试jQuery Dialog,因为它的行为就像一个模态,但会让你保持在同一个窗口中。因此,可以使用以下代码轻松刷新:
location.reload(true);
有关详细信息,请在此处查看this问题。
希望它有所帮助。