我有一個用戶控件有幾個按鈕。確定用戶控件中的哪個按鈕發送了事件
在page_load
,我想運行一個方法,除非一個特定的按鈕被按下。
當我檢查用戶控件內的page_load
發件人時,我只是獲取用戶控件的名稱而不是按鈕本身。
有沒有一種方法可以確定按下哪個按鈕page_load
?否則,我將不得不提出一些黑客方法來解決這個問題。
我有一個用戶控件有幾個按鈕。確定用戶控件中的哪個按鈕發送了事件
在page_load
,我想運行一個方法,除非一個特定的按鈕被按下。
當我檢查用戶控件內的page_load
發件人時,我只是獲取用戶控件的名稱而不是按鈕本身。
有沒有一種方法可以確定按下哪個按鈕page_load
?否則,我將不得不提出一些黑客方法來解決這個問題。
你可以在你的用戶控件中創建一個屬性來返回單擊的按鈕(或設置一個標誌或其他),並將其設置在用戶控件內的每個按鈕的單擊事件中?
我認爲你可以檢查Request.Form ("__EVENTTARGET")
- 應該包含你的控件的ClientID
。
這指的是ASP.NET事件處理框架用來跟蹤用戶點擊的隱藏字段的值。當用戶觸發回傳時,頁面上的某些JavaScript將該隱藏字段設置爲您在提交表單之前單擊的控件的ClientID
。
你確定你正在處理頁面模型嗎?頁面加載事件發生(構建服務器端對象模型),然後您的控件將處理綁定到控件的按鈕單擊事件。
頁面加載可能會出現任何數量的回發原因,除了您單擊的用戶控件中的按鈕。
怎麼樣在頁面上的其他控件按鈕?
有時候有很好的理由要做到這一點,但我也擔心你只是圍繞ASP.NET頁面模型進行黑客攻擊。
這裏有一個簡單的方法來檢查,如果被按下特定的按鈕:
protected bool isButtonClicked(string buttonName)
{
bool isClicked = false;
foreach (string ctl in this.Request.Form)
{
if (ctl.EndsWith(buttonName))
{
isButtonClicked = true;
break;
}
}
return isClicked;
}
不,剛剛發回就像發件人屬性的用戶控件的名稱。 – 2008-11-18 01:25:36
您在用戶控件的代碼中添加了哪些子控件? – 2008-11-18 11:20:47