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);

しかし、テストすると、「プロパティ 'location' の値を取得できません: オブジェクトが null または未定義です」というエラーが表示されます。

どんな助けでも大歓迎です!

4

2 に答える 2

0

古いモーダル ダイアログ ウィンドウを使用する代わりに、jQuery Dialogを試してください。モーダルと同じように動作しますが、同じウィンドウにとどまります。したがって、次のコードで簡単に更新できます。

location.reload(true);

詳細については、SO でこの質問を確認してください。

それが役に立てば幸い。

于 2013-01-25T01:23:45.423 に答える
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 に答える