asp.net:動的に作成されたコントロールがポストバックしたかどうかを確認する方法

asp.net
asp.net:動的に作成されたコントロールがポストバックしたかどうかを確認する方法

動的に作成されたコントロールがポストバックしたかどうかを確認する方法は?以下のコードは機能していません。

Control control = null;

    string ctrlname = page.Request.Params.Get("__EVENTTARGET");
    if (ctrlname != null && ctrlname != string.Empty)
    {
        control = page.FindControl(ctrlname);
    }
    else
    {
        foreach (string ctl in page.Request.Form)
        {
            Control c = page.FindControl(ctl);
            if (c is System.Web.UI.WebControls.Button)
            {
                control = c;
                break;
            }
            if (c is System.Web.UI.WebControls.ImageButton)
            {
                control = c;
                break;
            }
        }
    }
    return control;

page_Initに動的にいくつかの画像ボタンを作成しました。 ただし、上記のコードは常にnullを返します。 何故ですか? 画像ボタンがポストバックしたかどうかを確認するにはどうすればよいですか?

注:これらの画像ボタンのクリックイベントを処理できます。

  0  0


ベストアンサー

Page_Load時にどのコントロールがポストバックを開始したかを知りたい場合は、http://www.velocityreviews.com/forums/t90304-detect-which-imagebutton-caused-postback.html [Steve C. Orr]にはいくつかのヒントがあります。

__
PageクラスのRaisePostBackEventメソッドをオーバーライドできます。 このメソッドに送信される最初のパラメーターは、ポストバックを引き起こしたオブジェクトです。 ポストバックイベントが正しく発生するように、 `base.RaisePostBackEvent()`を呼び出すことを忘れないでください。

または、loadイベントの代わりに、すべての制御イベントの後に発生するPreRenderイベントに条件コードを移動できます。 そのため、どのコントロールがポストバックを引き起こしたかがわかります。
__

…​

_
ImageButtonがグリッド内にある場合、ボタンにcommandNameを配置し、itemCommandにコマンドがコマンドかどうかをチェックできます。
_

1


タイトルとURLをコピーしました