2011-03-07 13 views
0

動的に作成されたコントロールがポストバックしているかどうかを確認する方法は?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

私はあなたをフォローしていません。 「画像ボタンが投稿されたかどうかを確認する」とはどういう意味ですか?処理しているクリックイベントはポストバックですか? – tiago2014

+0

これには解決策がありましたか? – Lijo

答えて

1

あなたは、Page_Loadの時にポストバックを開始した1 Steve C. Orrはいくつかのヒントを持っているかを制御知りたい場合は、次の

ページ クラスの RaisePostBackEventメソッドをオーバーライドすることができます。 に送信された最初のパラメータは、 ポストバックを引き起こしたオブジェクトです。 base.RaisePostBackEvent()に電話して、 ポストバックイベントが正しく発生するようにしてください。代わりに、代わりにあなたはすべてのコントロールイベントの後 起こるPreRenderイベントのために、条件付きコード を動かすことができ loadイベントの

。だから によって、どのコントロール( )がポストバックを引き起こしたのか知ることができます。

...

あなたのImageButtonは、グリッド内にある場合、コマンドは、コマンドであれば、 あなたのボタン コマンド名に及びitemCommandチェック に置くことができます。

http://www.velocityreviews.com/forums/t90304-detect-which-imagebutton-caused-postback.html

+0

'Page_Load'自体にコントロールのIDが必要な場合はどうしますか? 'RaisePostBackEvent'ではなく? – Lijo

関連する問題