- - PR -
親画面→子画面→孫画面のページ遷移について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-12-06 14:38
いつもお世話になっております。
ASP.NET(VB.NET)でWebアプリを開発しています。 (ブラウザはIE5.0以上が対象) 親画面→子画面→孫画面とページ遷移し、その孫画面で入力した値を 子画面に表示させたいのですがうまく出来ません。 (画面遷移はASP側からJavaScriptを発行して実現しています) 具体的に言いますと、(親画面=A,子画面=B,孫画面=C) A画面のボタンクリックでB画面を開き、 B画面のボタンクリックでC画面を表示します。 C画面でボタンクリックで、 B画面のテキストボックスにC画面で入力した値を設定したいのですが、 C画面のwindow.openerで「nullまたは オブジェクトではありません」のエラーが発生します。 《詳細コード》 ----------------------【A画面】--------------------- 次のコードでB画面を開いています。 Dim strScript As New System.Text.StringBuilder strScript.Append("<script language=javascript>" & vbCrLf) strScript.Append("win_C=window.open("FormB","FormB.aspx");") strScript.Append("window.close();") strScript.Append("</script>") RegisterClientScriptBlock("openwin_B", strScript.ToString) ----------------------【B画面】--------------------- 次のコードでC画面を開いています。 Dim strScript As New System.Text.StringBuilder strScript.Append("<script language=javascript>" & vbCrLf) strScript.Append("win_C=window.open("FormC","FormC.aspx");") strScript.Append("window.close();") strScript.Append("</script>") RegisterClientScriptBlock("openwin_C", strScript.ToString) ---------------------【C画面】--------------------- C画面のボタンクリック時の処理は次のとおりです。 ※strInputにC画面での入力値が入ります。 Dim strScript As New System.Text.StringBuilder strScript.Append("<script language=javascript>" & vbCrLf) strScript.Append("window.opener.FormB.Txt_Input.value='" & strInput & "';") strScript.Append("window.close();") strScript.Append("</script>") RegisterClientScriptBlock("closewindow", strScript.ToString) ----------------------------------------------------- 試しに、【B画面】での入力値を【A画面】に設定する処理を 上記と同じようなコードで実施しましたが、 こちらは問題なく実行されました。 過去の投稿等を調べて、試行錯誤してみたのですが解決しませんでした。 何か原因や解決策をご存じでしたらご教授下さい。よろしくお願いします。 | ||||
|
投稿日時: 2005-12-06 15:11
閉じてるからなんじゃないでしょうか。 _________________ たつごろー codeseek こみゅぷらす | ||||
|
投稿日時: 2005-12-06 15:26
たつごろーさん。回答有難うございます。
B画面に値を設定した後で、C画面を閉じる仕様なので問題ないと考えています。 エラーは、そのC画面を閉じる前に発生します。 ---------------------【C画面】--------------------- C画面のボタンクリック時の処理は次のとおりです。 ※strInputにC画面での入力値が入ります。 Dim strScript As New System.Text.StringBuilder strScript.Append("<script language=javascript>" & vbCrLf) ★strScript.Append("window.opener.FormB.Txt_Input.value='" & _ strInput & "';") strScript.Append("window.close();") strScript.Append("</script>") RegisterClientScriptBlock("closewindow", strScript.ToString) ----------------------------------------------------- ★の部分でエラーが発生します。 内容が分かり難くて申し訳ありません。 | ||||
|
投稿日時: 2005-12-06 15:27
window.opener.Form1.Txt_Input.value ではなく? | ||||
|
投稿日時: 2005-12-06 15:41
たつごろーさんは、B画面でCを開いた後にB自身を閉じている個所を指摘されたのだと思いますが...
処理が繋がらないので、実際は閉じてはないとして話を続けます。 記述自体には誤りはないように見受けられますので、 ・Txt_Inputのコントロール名が異なっている。 ・Txt_Inputの属するForm名がFormBではない。 ・Txt_Inputが複数あり、配列になってしまっている。 あたりが怪しい部分です。 ブラウザでソースを表示してみて、その辺を確認してみて下さい。 | ||||
|
投稿日時: 2005-12-06 15:56
たつごろー、todoさん、でっち6号さん。回答ありがとうございます。
でっち6号さんのご指摘のとおり、ブラウザで確認したところ フォーム名がFormBではなく、Formbとなっていました。 お騒がせして申し訳ありませんでした。 |
1