- PR -

ASP.NET 親画面と子画面のデータの受渡しについて

投稿者投稿内容
ASP.NET初心者
常連さん
会議室デビュー日: 2005/01/07
投稿数: 30
投稿日時: 2005-02-15 10:58
いつもお世話になっております。ASP.NET初心者でございます。

ASP.NETにて親画面が子画面をjavascript(window.showModalDialog)にて開いています。
親画面にはグリッドがあり各行にリンクボタンのテンプレートがあります。そのリンクボタン押下イベントにて子画面が開くようになっています。
子画面にてテキストボックスに入力をし、コマンドボタン押下イベントにて親画面のグリッドのリンクボタンをクリックした行に子画面で入力した値をセットしたいと思っています。

なにかよい方法がありますでしょうか?
ご教授のほどお願い致します。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-02-15 11:31
試してませんが
リンクボタンで子画面をOpenするときに
クエリ文字列で、値をセットしたいオブジェクト名を渡して
子画面で受け取ったクエリ文字列から動的にスクリプトを生成するとか。。。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-02-15 13:43
 確かwindow.showModalDialogで開いた画面はPostBackさせられなかったはず。window.openで開いた子画面とは全然扱いが違って、submitすると新しいウィンドウが開いちゃいます。
 だから私の認識が間違ってなければ、showModalDialogで開く画面をサーバ側でいじれるのは初期表示時だけで、値渡しの処理一連は全部javascriptだけで実装しないといけません。子画面から親画面に値を渡すときはwindow.returnValueを使います。

参考:http://www.tohoho-web.com/js/window.htm#showModalDialog
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-02-15 13:49
引用:

確かwindow.showModalDialogで開いた画面はPostBackさせられなかったはず。window.openで開いた子画面とは全然扱いが違って、submitすると新しいウィンドウが開いちゃいます。



フレームを使用すれば、新規ウィンドウを開かないようにできますが、
Sessionで受け渡す場合には、子画面を閉じた時に親画面をPostしないといけないので面倒です。
よって、ぼのぼの様の言うとおりクライアントスクリプトで処理するのがイイと思います。
ASP.NET初心者
常連さん
会議室デビュー日: 2005/01/07
投稿数: 30
投稿日時: 2005-02-15 14:17
お世話になっております。ASP.NET初心者でございます。

burton999様、ぼのぼの様 貴重なご意見ありがとうございます。

「window.returnValue」について調べてみました。
参考にしたサンプルは親画面のテキストボックスにかえすものでしたが、それがグリッドの指定する行になっても問題なく動作するのでしょうか?
これから挑戦してみます。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-02-15 14:28
引用:

それがグリッドの指定する行になっても問題なく動作するのでしょうか?



グリッドの行とは、ただの文字列ですか?それともTextBoxなどですか?
ただの文字列なら、親画面をPostBackさせないと変更できないと思います。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-02-15 14:53
引用:

ただの文字列なら、親画面をPostBackさせないと変更できないと思います。


idさえふってあれば、tdタグやdivタグもinnerTextやinnerHTMLでいけませんでしたっけ?
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-02-15 15:16
引用:

idさえふってあれば、tdタグやdivタグもinnerTextやinnerHTMLでいけませんでしたっけ?



たしかに可能ですね。
DataGridで出力されるTDタグにはデフォルトではIDはふってないので
自分でIDを発行して、そのIDのオブジェクトに対してinnerTextを設定すれば可能です。

しかし、その子画面で入力されたデータは親画面に表示させるだけでよいのでしょうか?
その後、親画面からサーバーにPostしてなにか処理を行うのでしょうか?
だとしたら、DHTMLでグリッドに表示させても、サーバーでひろえなかった気がします。。。

スキルアップ/キャリアアップ(JOB@IT)