- - PR -
DataGridをで選択した項目を子ウィンドウにパラメータを渡したい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-08-04 19:11
ASP.netで、WebMatrixを利用してWebページを開発を
しているのですが、壁にぶちあたってしまったので教えてください。 DataGridを利用してデータベースのレコードをセットして、 その情報を元に子ウィンドウを立ち上げて詳細の情報を テキストボックスに表示をさせたいのですが、うまくできません。 そこで、以下の事を教えていただけないでしょうか。 その1: DataGridで選択用のボタンを作成し、 ボタンをクリックしたら子ウィンドウを立ち上げたいの ですが、色々と試したのですが、2回クリックしないと 立ち上がらなかったり、ボタン以外の部分を クリックしても立ち上がったりと、うまくいきません。 試したのは Sub Page_Load() datagrid1.Attributes.Add("onClick", "window.open('open6.aspx')") End Sub この場合だと、DataGridの選択用ボタン以外の場所を クリックしても、子ウィンドウが立ち上がってしまいます。 Sub DataGrid1_SelectedIndexChanged(sender As Object, e As EventArgs) datagrid1.Attributes.Add("onClick", "window.open('open6.aspx')") End Sub この場合だと、DataGridの選択用ボタンを1回目にクリックした場合では 子ウィンドウが立ち上がらず、2回目以降で子ウィンドウが 立ち上がります。 その2: DataGridで選択した情報を子ウィンドウにパラメータを 引き継ぎたいのですが、可能なんでしょうか。 もし可能でしたら、どのような方法で パラメータを渡せばよいのでしょうか? よろしくおねがいします。 | ||||||||
|
投稿日時: 2004-08-04 22:36
なんか、非常に惜しいような、的はずれなような その1で、ボタン以外をクリックしても…というのは、なぜそうなるのか、理解されているでしょうか。DataGridの属性としてonclickを追加しているので、DataGrid、HTML上ではtable要素ですが、table要素のどこをクリックしても…ということです。 その2ですが、なぜ1回目は表示されないのか。それは、1回目のクリックで、ボタンの属性にonclickを追加しているからです。初回表示では、onclickがないので、表示されないのです。 では、どうやって1回目のクリックで表示させましょうか。 1つの方法は、テンプレートカラムにボタンをおいて、属性を付加する方法です。このとき、<asp:button>ではなく、HTMLのボタンコントロールを置きます。 もう一つの方法は、Page.RegisterStartupScriptメソッドを使って、サーバに返ってきたときにスクリプトを、属性としてではなく、ページのスクリプトとして登録する方法です。 時間があるなら、両方試してみて、お好きな方で。
パラメータで渡すと、リクエストに丸見えになりますから、セッションオブジェクトに入れる、というのがよいようです。 私は、キーだけ渡して、子ウインドウ側のサーバコードで、もう一度検索しています。 | ||||||||
|
投稿日時: 2004-08-05 13:58
Jittaさんへ 返信ありがとうございました。 ASP.NET&Web開発初心者の私では少し理解できなかったのですが、 Page.RegisterStartupScriptは具体的にはどのように利用すれば よろしいのでしょうか?
こちらに関してですが、子ウィンドウを開く時に一緒に パラメータを渡したのですが、この場合はJavaScriptで パラメータを埋め込めばよろしいのでしょうか? | ||||||||
|
投稿日時: 2004-08-05 14:35
各選択ボタンのAttributes["onclick"]に
"window.open('open6.aspx?key=値', '_blank');return false;" を代入すればいいでしょう。 http://www.atmarkit.co.jp/fdotnet/dotnettips/104confirmdg/confirmdg.html |
1