- - PR -
ポストバックの原因となったコントロールを取得するには
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2002-12-20 10:54
はじめましてみやび(雅)です。
Page_Load時にポストバックの原因となったコントロールを 知るにはどうすればよいのでしょうか? ASP.NET(VB.NET)で開発をしています。 どなたかわかる方がいらっしゃいましたら教えてください。 宜しくお願いします。 | ||||
|
投稿日時: 2002-12-20 11:30
生成されるHTMLのスクリプトを見ると、__EVENTTARGETに入っているかも知れません。
以下のようにして、確かめてみて下さい。 Response.Write(Request.Params["__EVENTTARGET"]); | ||||
|
投稿日時: 2002-12-20 15:14
catsさん返信ありがとうございます。 catsさんの方法を試してみたのですが "__EVENTTARGET"と言うキーは存在しないようでした。 他のキーの値も確認してみましたが、それらしいものは見つけられませんでした。 なにか違う方法はありませんか? よろしくお願いします。 | ||||
|
投稿日時: 2002-12-20 15:44
Page_Load イベントでなければダメでしょうか?
例えば、ボタンをクリックした時の、ボストバックを発生させたコントロールの取得は ボタンクリックイベントで取得できるのですが・・・。
どうですかねぇ。 | ||||
|
投稿日時: 2002-12-20 15:55
Page_Loadメソッドには、senderという名のObject型の引数があるので、WebControlかControlにキャストしてIDプロパティを見れば良いのでは? [ メッセージ編集済み 編集者: DaikiRyuto 編集日時 2002-12-20 15:58 ] | ||||
|
投稿日時: 2002-12-20 17:20
wild catさん、DaikiRyutoさん返信ありがとうございます。
結局Page_Loadではコントロールを取得できなかったのですが Clickイベントでなんとか処理するように構造を変えました。 DaikiRyutoさんの方法では キャストできないと例外がでてしまい出来ませんでした。 ためしに sender.GetType.FullName をみた所 "ASP.Dev_aspx" と返ってきていたので コントロールへの変換はできないように思えます。 (Dev.aspxという名前のファイル名で試しました) 結局、よく検討した結果wild catさんの言う通り 「ボタンクリックイベント」でも大丈夫そうなので そちらの方法に切り替えました。 みなさんありがとうございました。 | ||||
1
