- PR -

window.open時の親画面から子画面へのデータ移行に関して

1
投稿者投稿内容
初心者
常連さん
会議室デビュー日: 2006/11/24
投稿数: 29
投稿日時: 2006-11-27 14:28
いつも参考にさせていただいております。
開発環境は
ASP.NET 2.0 /VisualStudio2005(VB) /Oracle.DataAccess となります。

JavaScriptのwindow.open()を使用して、メインのフォームから子画面を呼び出しているのですが、子画面で入力したデータを親画面にセットするというのはできたのですが、親画面で入力したデータを子画面にセットするというのがうまくいきません。ボタンをクリックすると子画面をOPENするようにしているのですが、1回目にクリックしたときはデータがセットされず、2回目にクリックするとデータがセットされています。データセットの方法としましては、クリック時にSession関数にデータを入れてそれをセットするというふうにしているのですが、どうも、JavaScriptのwindow.open()のほうが先に動いていて、Session関数にデータがセットできていないみたいなのですが、クリック時にうまくデータを取得して子画面に渡す方法はないでしょうか。また、子画面の方からデータを取得しようと以下のようにしてみましたが、

function Busyo_Get() {
document.form1.txtBsCd.value = window.opener.document.form1.txtBusyoCd.value ;
document.form1.txtBsNm.value = window.opener.document.form1.txtBusyoNm.value ;

return ;
}

子画面が起動された、ときにBusyo_Get() を呼び出すというのができなくて悩んでおります。長々とすみませんが、ご教授宜しくお願い致します。
Katze
ベテラン
会議室デビュー日: 2005/11/01
投稿数: 74
お住まい・勤務地: 1台でも せんだい
投稿日時: 2006-11-27 14:49
引用:
クリック時にSession関数にデータを入れてそれをセットするというふうにしているのですが、どうも、 JavaScriptのwindow.open()のほうが先に動いていて、Session関数にデータがセットできていないみたいなのですが、クリック時にうまくデータを取得して子画面に渡す方法はないでしょうか。



JavaScriptのwindow.open()はクライアントサイドのonClick時にJavaScriptで呼出し、
SessionにデータをセットするのはサーバサイドでのClickイベントで処理しているの
ではないでしょうか?

それだとSessionにデータをセットする前に子画面が開くので期待した動きにはならな
いと思うので、サーバサイドでSessionに設定後、RegisterStartupScriptでJavaScript
を吐き出せば期待したような動きができるのではないでしょうか。
初心者
常連さん
会議室デビュー日: 2006/11/24
投稿数: 29
投稿日時: 2006-11-27 15:58
サーバサイドでSessionに設定後、RegisterStartupScriptでJavaScriptを呼び出せば
思ったようにデータをセットすることができました!!

Katzeさん、どうもありがとうございました。
1

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