0

我有一个启动模式对话框窗口的 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);

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

任何帮助将非常感激!

4

2 回答 2

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 中,只是显示在代码块中以便于阅读。

于 2013-01-24T15:42:35.720 回答
0

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

location.reload(true);

有关更多信息,请在此处查看问题。

希望能帮助到你。

于 2013-01-25T01:23:45.423 回答