2009-03-10 12 views
1

私は他のページがモーダルな方法で開かれているページに取り組んでいます。 特定のコントロールを更新するために、オープナーページに関数が存在することを呼び出す必要があります。別のページのページに1つの呼び出しメソッドが存在するのはどうですか?

私は別のウィンドウを開くのにwindow.openを使用していますが、この場合は開いているページのPage.PreviousPageがnullです。

私は前のページを参照するために

<%@ PreviousPageType VirtualPath="~/PreviousPage.aspx" %> 

を使用しています。

提案がありますか?

FYI:すべてのaspxページはAJAX対応です。

答えて

2

Pageクラスのコードの背後にあるメソッドを呼び出して、表示されているページのコントロールを更新することはできません。 Pageクラスのインスタンスは、ページのレンダリング中にのみ存在し、ページがブラウザに表示されると、Pageオブジェクトは存在しなくなります。

1つのページから別のページに投稿をするときに、そのページのレンダリングに使用されたPageオブジェクトが含まれていない場合、PreviousPageプロパティが使用されます。再描画されるPageオブジェクトが含まれます何でも。これを使用して、投稿された情報に基づいてフィールドの情報を読み取ることができます。

オープナーページを更新する場合は、Javascript()を使用してクライアント側で行うか、ページを再ロードしてサーバー側のコードで再投入する必要があります。両方を組み合わせると、AJAXを使用してページを更新することになります。

編集:

window.opener.doSomething('data'); 

window.opener.document.getElementById('Info').innerHTML = 'updated'; 

あなたはまた、開幕戦のページではJavaScript関数を呼び出すことができます:あなたは、たとえばオープナーにアクセスして、要素の内容を変更するにはJavascriptを使用することができます

これは、サーバーからデータをロードするためのAJAX呼び出しのような、より多くの可能性を提供するものです。

+0

Guffa、PreviousPageプロパティは、オープナーページについての日付を収集するためにのみ使用されていますが、更新することはできません。 Javascriptを使用してこれを説明しましたが、これ以上説明できますか? – Ahmed

+0

はい、PreviousPageはViewStateやFormデータなどのデータを持つ新しいPageオブジェクトを作成しますが、ブラウザに表示されるページとは関係ありません。私はいくつかのJavascriptの例を投稿に追加しました。 – Guffa

1

javascriptを使用して親ページをサーバーに送信できます。 javascriptのwindow.opener関数を使用して、親ページにアクセスすることができます。

+0

合意、window.openerは、モーダル/ポップアップページを開いたウィンドウへの参照を提供します。新しいウィンドウから親ページのJS関数を呼び出すか、コントロールを直接更新することができます。 –

関連する問題