- - PR -
子ウィンドウから親ウィンドウに値を反映させたい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-10-22 08:48
VS2005(C#)で開発しています。
親ウィンドウからボタンのクリックで子ウィンドウを呼び出し、子ウィンドウで入力された値を親ウィンドウに反映させたいのですが、その際に画面をリロードすることなく反映させることは可能でしょうか?window.openerを使えば、呼び出し元ウィンドウに値を反映できる、というところまではなんとなく分かったのですが、今の状態ですと画面がリロードしてしまい、すでに入力されているほかの項目の値を保持させるのが、とてもめんどくさそうに思えます。Ajax Control Tool Kit等を使ってできないものでしょうか?? | ||||
|
投稿日時: 2008-10-22 09:41
まぁ適当ですが一応Firefox3では目的と思われる動作します。
| ||||
|
投稿日時: 2008-10-22 10:27
ありがとうございます。
子ウィンドウは検索画面で、検索結果をGridViewに表示して、その中から選択されたものの情報を親ウィンドウに渡す、という挙動を行いたいのですが、GridViewのAutoGenerationSelectButtonに「function SetToOya()〜」の部分を呼び出そうとして、また詰まってしまいました・・・(´・ω・`) Renderイベントもないみたいなのですが、どのような記述が良いのでしょうか・・・? | ||||
|
投稿日時: 2008-10-22 10:53
自己レスですみません。
Functionを使わずにそのままjavascriptを追加すれば言いだけですね・・・ ↓↓↓の感じでいけました、johnesさん、ありがとうございます! protected void dtgHoge_SelectedIndexChanged(object sender, EventArgs e) { // 選択された行の値を取得 String strHoge = dtgHoge.SelectedRow.Cells[1].Text.ToString(); // javascriptの追加に必要なプロパティを定義 Type tpPubs = this.GetType(); String strJSClient = "SelectedItems"; // ClientScriptManagerクラスの定義をページクラスから読み込む ClientScriptManager csm = Page.ClientScript; // クライアントスクリプトがすでにセットされていないか確認 if(!csm.IsClientScriptBlockRegistered(tpPubs,strJSClient)) { // ストリングビルダーを宣言し、javascriptを追加 StringBuilder stbPubs = new StringBuilder(); stbPubs.Append("<script type=\"text/javascript\">{window.opener.document.form1.TextBox1.value = " + strHoge + "; window.close();}</script>"); // クライアントスクリプトにセット csm.RegisterClientScriptBlock(tpPubs, strJSClient, stbPubs.ToString(), false); } } |
1