- PR -

PostBackの発生したイベント

1
投稿者投稿内容
GOOOP
ベテラン
会議室デビュー日: 2006/04/01
投稿数: 52
投稿日時: 2006-07-05 18:22
いつもお世話になります。現在、ASP.NET(VS2005)にて開発を行っています。

1つのASPXファイルに
Webコントロール コンボボックスA
Webコントロール コンボボックスB
Webコントロール ボタン
Webコントロール GridView
を配置し、

ボタンを押した段階で、コンボボックスA、Bのデータを検索条件としDBアクセスし、結果を
GridViewに表示する処理をしたいと思っています。

そこで、問題があるのが、検索条件の選択方法として
コンボボックスAを選択したときにはAutoPostBackにてそれに関連する内容をコンボボックスBに
コンボボックスBを選択したときにはAutoPostBackにてそれに関連する内容をコンボボックスAに表示させたいのですが、ボタンを押したタイミングで、
結果をGridViewに表示する処理まで動いてしまいます。

ボタンを押したあとにFormLoad内(他でもいいのですが)でボタンが押されたために発生したPostBackか
それともコンボボックスを選択したため発生したPostBackかを見分ける方法はないでしょうか?
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-07-05 18:51
引用:

GOOOPさんの書き込み (2006-07-05 18:22) より:

コンボボックスAを選択したときにはAutoPostBackにてそれに関連する内容をコンボボックスBに
コンボボックスBを選択したときにはAutoPostBackにてそれに関連する内容をコンボボックスAに表示させたいのですが、ボタンを押したタイミングで、
結果をGridViewに表示する処理まで動いてしまいます。


ボタンを押す???
AutoPostBack なんですよね?

このボタンにはどういう機能があるんですか?
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-07-05 18:52
引用:

GOOOPさんの書き込み (2006-07-05 18:22) より:
ボタンを押したあとにFormLoad内(他でもいいのですが)でボタンが押されたために発生したPostBackか
それともコンボボックスを選択したため発生したPostBackかを見分ける方法はないでしょうか?


何かにその情報を退避させときゃいいんじゃないの?
PostBackがAutoで走るから困っているって?
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-07-05 19:10
引用:
GOOOPさんの書き込み (2006-07-05 18:22) より:
ボタンを押したあとにFormLoad内(他でもいいのですが)でボタンが押されたために発生したPostBackか
それともコンボボックスを選択したため発生したPostBackかを見分ける方法はないでしょうか?

とりあえずパラメータ全部拾ってみて比較してみるといろいろわかります。

ボタンか否かを知りたいなら
Button1=表示
みたいなPOSTパラメータがわたってくると思います。

AutoPostBackしたコントロールを知りたいなら,HTML出力をよくみるとわかりますが
["__EVENTTARGET"]
というパラメータ(.NETが勝手に付けたものですが)に入っていると思います。

[ メッセージ編集済み 編集者: べる 編集日時 2006-07-05 19:11 ]
GOOOP
ベテラン
会議室デビュー日: 2006/04/01
投稿数: 52
投稿日時: 2006-07-05 20:12
>かるあさん
ボタンは通常のWebUIControls.Buttonで、
クリックするとPostBackが発生するだけのものになります。

>ぶさいくろうさん
待避の方法がわからなかったもんで。。。

>べるさん
Page.FindControl("__EVENTTARGET")で取ればよいということですか?
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-07-05 20:51
引用:
GOOOPさんの書き込み (2006-07-05 20:12) より:
>べるさん
Page.FindControl("__EVENTTARGET")で取ればよいということですか?

いや、コントロールとして生成まではされないです。HTMLに送信されるときに
__EVENTTARGETというname属性を持ったhiddenのinputタグができます。
AutoPostBackする瞬間にjavascriptでコントロール名が入る仕組みになってるみたいです。
だからPOSTパラメータ(ってわかっています?)で取得できます。
Page.FindControlではなく、Request.Formのインデクサです(Requestだけでもとれるけど)

引用:
とりあえずパラメータ全部拾ってみて比較してみるといろいろわかります。

・・・HTML出力をよくみるとわかりますが・・・

やってみました?あ、比較っていうのはボタンでsubmitしたときと
ドロップダウンでしたときと、とかそういう意味でした。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-07-05 21:30
 Page_Load あたりに全部の処理を書いてるんじゃない?
それぞれのコントロールの、それぞれのイベントにハンドラをアサインして、ハンドラメソッドの中で処理すれば、それだけしかやらないはずだけど?


追加:
引用:

コンボボックスAを選択したときにはAutoPostBackにてそれに関連する内容をコンボボックスBに
コンボボックスBを選択したときにはAutoPostBackにてそれに関連する内容をコンボボックスAに


なんか、矛盾しそう。。。

[ メッセージ編集済み 編集者: Jitta 編集日時 2006-07-05 21:31 ]
1

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