- PR -

親と子の値渡し。

投稿者投稿内容
じぃ
常連さん
会議室デビュー日: 2005/09/12
投稿数: 23
投稿日時: 2005-10-05 19:04
一日で二度の投稿ですが、どうぞ宜しくお願いします。

親画面(WebForm1.aspx)のボタンを押し、子画面(WebForm2.aspx)をひらいて、
-----------------------------
※開く時は、Button1.Attributes["onclick"] = "window.open('WebForm2.aspx?id=name','', 'width=550,height=300');"
をPage_Loadに記載しています。
-----------------------------
初めは子画面に「検索状況」と表示します。
同時に親画面ではクリック時のイベント内に、処理@を記載し、
処理@が終わったら、子画面にデータを投げて、子画面はそのデータを受けて
処理@の内容を表示する。
且つ、初めは非表示にしていたボタン1(閉じるボタン)を表示するような
ことを行いたいのです。
しかし、データの受け渡し方法が分からずとまどっています。
できれば、C#のソースでうまくできないかとも思っています。

ちなみに、Sessionを使用しようと思ったのですが、Session時は、Response.Redirect
をしなければ、データが渡らないのでは?といろいろ調べて思い、
今はどうしたらよいのか全く分からない状況です。

お願いします。
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2005-10-05 19:39
お世話になります。

引用:

じぃさんの書き込み (2005-10-05 19:04) より:

初めは子画面に「検索状況」と表示します。
同時に親画面ではクリック時のイベント内に、処理@を記載し、
処理@が終わったら、子画面にデータを投げて、子画面はそのデータを受けて
処理@の内容を表示する。



親画面が処理@が終わった時点で
Sessionに「子画面に対して投げたいデータ」を格納し、
その後、子画面のwindowオブジェクトをJavaScriptで取得し、reloadさせて、
子画面のPage_LoadイベントでSessionから取得した内容を表示する。
同時に子画面で閉じるボタン.visible = true。

ではないでしょうか…。

[ メッセージ編集済み 編集者: なおこ(・∀・) 編集日時 2005-10-05 19:42 ]
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2005-10-05 19:39
二重投稿により、削除

[ メッセージ編集済み 編集者: なおこ(・∀・) 編集日時 2005-10-05 19:40 ]
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-10-05 19:44
こんにちは、でっちです。

ウィンドウ名称を固定にすれば、開いたウィンドウを指定して再表示ができるので、下記手順などいかがでしょうか?

1.「検索状況」画面を開く
(基本は現状通り。window.openの第2引数に固定文字を指定し、表示制御用のQueryStringを追加する)
2.サーバサイドのボタンクリックイベントでSessionに表示情報をセット
3.RegisterStartupScriptを使用して、子画面を再表示するスクリプトを出力。

コードは大体こんな感じです
コード:
○Page_Load
Button1.Attributes["onclick"] = "window.open('WebForm2.aspx?id=name&status=start',"
	+"'hogohoge','width=550,height=300');"
 
○Button1_Click
***表示データを編集し、Sessionに格納する処理を記述***
string startupScript = "<script language='JavaScript'>"
	+ "window.open('WebForm2.aspx?id=name&status=show','hogohoge','');</script>";
RegisterStartupScript("startup", startupScript);



WebForm2.aspx側はQueryStringに追加した"status"で判定すれば、データの有無が分ります。
※最初に開くものは別ファイル(静的HTML)にしても良いかもしれません。
じぃ
常連さん
会議室デビュー日: 2005/09/12
投稿数: 23
投稿日時: 2005-10-05 19:49
なおこ(・∀・)さん、またまたありがとうございます。

流れは理解しました。
引用-----------------------
その後、子画面のwindowオブジェクトをJavaScriptで取得し、reloadさせて
---------------------------

という部分がよく分かりませんでした。

1.Sessionにいれた値を、子画面のHTMLコード(クライアントコード)
⇒つまり、Javascriptで取得するように書くということですか?
(この場合、window.opner?のようなものを使いますか?)

2.Sessionに値をいれた後に、子画面をjavaで呼ぶということですか?
それは、RegisterClientScriptBlockのようなもので、Javascriptを追加?
し、子画面を呼ぶ=reloadということでしょうか?

2つとも間違っているかもしれませんが、今の状態では、このくらいしか、
思いつきません。
間違いや、もしくは、近い考えがありましたら、再度教えて頂け
ないでしょうか。
宜しくお願いします。


じぃ
常連さん
会議室デビュー日: 2005/09/12
投稿数: 23
投稿日時: 2005-10-05 19:57
でっち6号さんありがとうございます。
なおこさんに返信している間に、でっち6号さんの書き込みが
あったようで、再度の質問とかぶってしまいました。

でっち6号さんの書き込みで、流れがよく分かりました!

もう一度考えて、データを追いながら、チャレンジしてみます。

出来た/出来なかったについては、再度書き込みさせて頂きます。


todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-10-05 19:59
引用:

同時に親画面ではクリック時のイベント内に、処理@を記載し、



処理(1)を子画面(WebForm2.aspx)内で行った方が簡単でしょう。
じぃ
常連さん
会議室デビュー日: 2005/09/12
投稿数: 23
投稿日時: 2005-10-05 20:18
みなさん、ありがとうございます。
でっち6号さんの通り、やってみたのですが、
結果画面の方で、セッションをうまく取得できません。
初めは、Session["status"]を使うのかとも思ったのですが、調べて、
Request.QueryStringがあると分かりました。
しかし、QueryStringをビルドすると、
------------------------------
'System.Web.HttpRequest.QueryString' は 'プロパティ' を意味しますが、 'メソッド' でなければなりません。
------------------------------

のようなエラーになってしまいました。
なにか違う方向で、考えてしまっているからでしょうか?

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