2008-11-18 51 views
1

我有一個用戶控件有幾個按鈕。確定用戶控件中的哪個按鈕發送了事件

page_load,我想運行一個方法,除非一個特定的按鈕被按下。

當我檢查用戶控件內的page_load發件人時,我只是獲取用戶控件的名稱而不是按鈕本身。

有沒有一種方法可以確定按下哪個按鈕page_load?否則,我將不得不提出一些黑客方法來解決這個問題。

回答

0

你可以在你的用戶控件中創建一個屬性來返回單擊的按鈕(或設置一個標誌或其他),並將其設置在用戶控件內的每個按鈕的單擊事件中?

2

我認爲你可以檢查Request.Form ("__EVENTTARGET") - 應該包含你的控件的ClientID

這指的是ASP.NET事件處理框架用來跟蹤用戶點擊的隱藏字段的值。當用戶觸發回傳時,頁面上的某些JavaScript將該隱藏字段設置爲您在提交表單之前單擊的控件的ClientID

+0

不,剛剛發回就像發件人屬性的用戶控件的名稱。 – 2008-11-18 01:25:36

+0

您在用戶控件的代碼中添加了哪些子控件? – 2008-11-18 11:20:47

0

你確定你正在處理頁面模型嗎?頁面加載事件發生(構建服務器端對象模型),然後您的控件將處理綁定到控件的按鈕單擊事件。

頁面加載可能會出現任何數量的回發原因,除了您單擊的用戶控件中的按鈕。

怎麼樣在頁面上的其他控件按鈕?

有時候有很好的理由要做到這一點,但我也擔心你只是圍繞ASP.NET頁面模型進行黑客攻擊。

0

這裏有一個簡單的方法來檢查,如果被按下特定的按鈕:

protected bool isButtonClicked(string buttonName) 
    { 
     bool isClicked = false; 
     foreach (string ctl in this.Request.Form) 
     { 
      if (ctl.EndsWith(buttonName)) 
      { 
       isButtonClicked = true; 
       break; 
      } 
     } 
     return isClicked; 
    } 
相關問題