- - PR -
C#+ASP.NET 子ウィンドウに親ウィンドウのデータを渡したい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-06-26 11:20
初めて投稿させて頂きます。
VisualStodio2003でASP.NETアプリ開発しています。 WEBアプリは超初心者です。 親ウィンドウにDataGridを作成し、ボタン列を追加。 そのボタンを押した時に新しいウィンドウを表示し、 DataGridの行番号を新しいウィンドウに渡したいのですが、 どうやったら良いのか分かりません。 はじめは、 ボタン列のonclickイベントに子ウィンドウ表示を定義し、 ボタン列クリックイベントでボタンが押された行番号をSessionに登録、 その情報を子ウィンドウのPage_Loadメソッドで取得しようとしたのですが、 Sessionに登録する前に子ウィンドウが表示されてしまうために うまく情報が渡せません。 <C#> void DataGrid_ItemDataBound(省略) { Button.Attributes["onclick"] = "window.open('DetailOfScore.aspx', '', '' )"; } void DataGrid_ItemCommand(省略) { Session["DataRow"] = 行番号; } ご存知の方がいらしたら、 ご教授お願いします。 | ||||
|
投稿日時: 2007-06-26 11:26
やり方は2つあると思います。
1.DataGrid_ItemCommand 時に Form の onLoad でウインドウを開く処理を埋め込む。 2.子ウインドウを開く引数に行番号を与える。 _________________ かるあ のメモ と スニペット | ||||
|
投稿日時: 2007-06-26 11:41
TO かるあさん
素早い返答ありがとうございます。 早速、1.のやり方を調べてみたのですが・・・ よいサンプルが見つかりません。。。 申し訳ないのですが、 もし、何かサンプル等があれば 教えて頂けないでしょうか。 宜しくお願い致します。 | ||||
|
投稿日時: 2007-06-26 17:43
2.のやり方でよければ。
void DataGrid_ItemDataBound(省略) { Button.Attributes["onclick"] = "window.open('DetailOfScore.aspx?GYO=行番号', '', '' )"; } あとは子画面で Request.Params("GYO") で拾えるかと思います。 | ||||
|
投稿日時: 2007-06-26 17:55
1だとこんな感じかな。
とはいえ、これだと DetailOfScore.aspx を開くときにブラウザの警告に合うのでポップアップを許可しとかないとだめですね。 サーバ側で何か処理をした後に開きたいとかでなければ、よっし〜さんの方法がいいかも。 _________________ かるあ のメモ と スニペット | ||||
|
投稿日時: 2007-06-26 18:30
TO よっし〜さん かるあさん
返答ありがとうございます。 あれから自分でも色々調べ、 1.の方法で解決しました。 void DataGrid_ItemCommand(省略) { Session["DataRow"] = oDataRow; StringBuilder sb = new StringBuilder(); sb.Append("<script Language='javascript'>\n"); sb.Append("window.open('DetailOfScore.aspx', '', 'width=840,height=550')\n"); sb.Append("</"); sb.Append("script>"); this.RegisterClientScriptBlock("openwin", sb.ToString()); } 本当にありがとうございました。 また、宜しくお願いします。 | ||||
|
投稿日時: 2007-06-26 18:54
本題とは関係ないですし、余計な御世話かもしれませんが、
StringBuilderは必要ないのではないでしょうか。 固定的文字列連結ならば、 &= 演算子 (Visual Basic) http://msdn2.microsoft.com/ja-jp/library/fz1zs43f(VS.80).aspx かリテラル(そのまま1行に記述)で(の方が)よいと思います。 | ||||
|
投稿日時: 2007-06-27 05:54
文字列を連結するときは、StringBuilderの方が高速です。 サンプルを作成して検証してみてください。 _________________ ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集 |