- PR -

ポストバックの原因となったコントロールを取得するには

1
投稿者投稿内容
みやび
会議室デビュー日: 2002/12/20
投稿数: 3
投稿日時: 2002-12-20 10:54
はじめましてみやび(雅)です。

Page_Load時にポストバックの原因となったコントロールを
知るにはどうすればよいのでしょうか?

ASP.NET(VB.NET)で開発をしています。

どなたかわかる方がいらっしゃいましたら教えてください。
宜しくお願いします。

cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2002-12-20 11:30
生成されるHTMLのスクリプトを見ると、__EVENTTARGETに入っているかも知れません。

以下のようにして、確かめてみて下さい。
Response.Write(Request.Params["__EVENTTARGET"]);
みやび
会議室デビュー日: 2002/12/20
投稿数: 3
投稿日時: 2002-12-20 15:14

catsさん返信ありがとうございます。

catsさんの方法を試してみたのですが
"__EVENTTARGET"と言うキーは存在しないようでした。
他のキーの値も確認してみましたが、それらしいものは見つけられませんでした。

なにか違う方法はありませんか?
よろしくお願いします。
wild cat
会議室デビュー日: 2002/08/29
投稿数: 13
投稿日時: 2002-12-20 15:44
Page_Load イベントでなければダメでしょうか?
例えば、ボタンをクリックした時の、ボストバックを発生させたコントロールの取得は
ボタンクリックイベントで取得できるのですが・・・。

コード:
protected void Button_Click(object sender, EventArgs e)
{
    Button b = (Button)sender;
    //この後に、処理する。例えば・・・。
    b.Text = "ポストバックしました!";
}


どうですかねぇ。

DaikiRyuto
大ベテラン
会議室デビュー日: 2002/07/23
投稿数: 200
投稿日時: 2002-12-20 15:55
引用:

みやびさんの書き込み (2002-12-20 10:54) より:
はじめましてみやび(雅)です。

Page_Load時にポストバックの原因となったコントロールを
知るにはどうすればよいのでしょうか?




Page_Loadメソッドには、senderという名のObject型の引数があるので、WebControlかControlにキャストしてIDプロパティを見れば良いのでは?



[ メッセージ編集済み 編集者: DaikiRyuto 編集日時 2002-12-20 15:58 ]
みやび
会議室デビュー日: 2002/12/20
投稿数: 3
投稿日時: 2002-12-20 17:20
wild catさん、DaikiRyutoさん返信ありがとうございます。

結局Page_Loadではコントロールを取得できなかったのですが
Clickイベントでなんとか処理するように構造を変えました。

DaikiRyutoさんの方法では
キャストできないと例外がでてしまい出来ませんでした。
ためしに sender.GetType.FullName をみた所
"ASP.Dev_aspx" と返ってきていたので
コントロールへの変換はできないように思えます。
(Dev.aspxという名前のファイル名で試しました)

結局、よく検討した結果wild catさんの言う通り
「ボタンクリックイベント」でも大丈夫そうなので
そちらの方法に切り替えました。

みなさんありがとうございました。
1

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