- - PR -
別ページのGridViewへのBindに関して
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-28 18:01
VS2005、言語はC#でASP.NET 2.0で開発しております。
ASPに関しては最近触れだした程度です。 frameを利用した2つのページが左右に存在し、 左ページのDropDownイベントSelectedIndexChangedメソッドを機に DataTableを取得し、右ページのGridViewでの表示を考えております。 データの受け渡しには現状ではSessionを利用しております。 Sessionでデータを受け取り、DataSourceにセット後、GridView.DataBind() としているのですがどうやらBindメソッドが働いてない(Bindingイベントを 拾わないため)ようであり、その原因がわからない状態です。 ご教授よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2007-02-28 23:23
実現させるためには、左ページの DropDownList の SelectedIndexChanged 後に、右ページのポストバックを起こさなければならないと思いますが、それは行ってらっしゃいますか?
左ページのコードビハインドで右ページの GridView の DataBind をやろうとしてませんよね? | ||||||||||||
|
投稿日時: 2007-03-01 14:34
THREE-ONE様ご返答ありがとうございます。 まさしくご指摘いただいた通りの処理をしておりました。。。 そこで再度自分なりに調べてみましたところ、buttonのPostBackUrlのような 処理が必要なのかと思ってみたのですが、それがDropDownListで再現できるのか どうかがわかりませんし、その方法についても見当がつきません。 申し訳ありませんが、ご教授いただけませんでしょうか。 よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2007-03-01 15:12
ドロップダウンを変更したときは何もせず、新たに用意したボタンを押下したタイミングで・・ って仕様だったら実現できそうですか?できるならあとはjavascriptで改良するだけなんですが、 ポストバック先のURLの問題よりもtargetの問題の方が重要な気がします。 ポストバック先だけ変えても、post結果は左フレームに表示されてしまいますよね。 実現方法としては、大きく分けて、 ・左フレームのドロップダウンのonchange(かな?、クライアントのイベントですよ)の タイミングで右フレームをsubmitさせる(おおよそTHREE-ONEさんの方法) ・左フレームのポストバック先を右フレーム用のページにし、かつtargetを右フレームにする (サーバーイベントの)SelectedIndexChangedのタイミングでは遅い(というか左ページにポストバックする 必要がない)ような気がします。 | ||||||||||||
|
投稿日時: 2007-03-02 10:26
べる様ご指摘ありがとうございます。
非常に勉強になります。
仕様に関しては特に制限がありませんので、こちらの手法でも全く問題 ありませんので下記に挙げていただいた手法が難しいようであればこちらに してみようと考えております。
これら2つの手法、また上記のボタンでの手法を挙げていただいて 思ったことなのですが、csファイル上だけでは処理が不可能であり、 HTMLでの処理が必要ということでしょうか。 ドロップダウンのonchange・・といった手法も恥ずかしながら 理解できずにいます。図々しいかとは思いますが、よろしければ サンプルコードのようなものをお見せいただけませんでしょうか。 よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2007-03-02 11:29
あまり変わらないと考えるといいです。 左フレームのドロップダウンの選択値が、右フレームで必要になりますよね。 だとすると私が挙げた下側のやり方のほうが楽かなーと思います。
(私が挙げた下側の方法ということになります) ・formのtargetを右フレームにする。 ・ボタンのPostBackUrlを右フレームのものにする。
クライアントに吐かれるソースが参考になると思います。c#側でクライアント属性を追加する方法は Attributes.Addを調べてみてください | ||||||||||||
|
投稿日時: 2007-03-02 17:04
べる様
度々のご指導ありがとうございます。 ご教授いただいたボタンによる右ページへの移行に 仕様の変更を考えました。 教えていただいた通りtargetおよびpostbackurlを 右ページに設定しました。 ここで1つ問題が発生したのですが、現在の仕様では 左ページにドロップダウンリストが2つ存在しており、 1つはデータベースの選択、もう1つはテーブルの選択 としております。 そして、データベース選択時に存在するテーブルを テーブル用ダウンリストのアイテムに追加しておりました。 そのため最初のデータベース選択時にautopostbackをしております。 データベースのドロップダウン選択時は左のページにpostback、 テーブル選択時(ボタン押し時)には右ページへpostback といったようなことは実現可能でしょうか。 dropdownlistにはpostbackurlの機能は見当たりませんし・・ ご教授よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2007-03-02 19:49
onClientClickに書けばpostbackurl用のスクリプトより前にかかれるみたいなんでそれでいいと思います。 ただ、このままだと、ボタンを押したあとにデータベース選択ドロップダウンをいじると 右フレームにsubmit(post)してしまうので、工夫が必要です。楽なのは下側だと思います↓ ・postbackurl機能を自作する ・データベース選択ドロップダウン変更時にtargetを左にする処理を加える(結局onchange)
テーブル選択のドロップダウンは自動ポストバックを行わないんだからその機能は必要ありませんよね |
1|2|3
次のページへ»