2011-03-07 46 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 2011-03-07 04:33:36

+0

您是否得到了解決方案? – Lijo 2013-01-23 18:49:54

回答

1

如果你想知道哪個控件啓動回發在Page_Load中時,一個Steve C. Orr有一些提示:

您可以覆蓋頁 類的 RaisePostBackEvent方法。發送到 此方法的第一個參數是導致 回發的對象。請記得致電 base.RaisePostBackEvent(),以便 回發事件得到正確提升。

或者,而不是Load事件 你可以將你的條件代碼 到prerender事件,所有的控制事件發生後 。因此,通過 ,您將知道哪個控件 導致了回發。

...

如果你的ImageButton的是一個網格, 你可以把你的按鈕的 的CommandName和itemCommand檢查 如果命令是你的命令裏。

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

+0

如果我需要'Page_Load'中的控件ID,該怎麼辦?不是'RaisePostBackEvent'? – Lijo 2013-01-23 18:52:18

相關問題