比方說,我有一個用戶控件與幾個按鈕。我想知道哪一個導致回發,使用這種方法:如何在自己的代碼中引用用戶控件?
public static Control GetPostBackControl(Page page)
{
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;
}
}
}
return control;
}
這是怎麼了稱之爲:
string btn = GetPostBackControl(this.Page).ID;
我得到了「對象未設置到一個對象的實例「我現在知道問題來自我使用this.Page,它代表父頁。
如何引用我所在的用戶控件? (不是父頁面)所以它可以使用該方法來查找導致回發的按鈕?
感謝您的幫助。
編輯
這兩個按鈕都位於用戶控件內。 GetPostBackControl()也位於用戶控件的代碼隱藏之中。
從我所看到的__EVENTTARGET具有完整的控件ID,因此可能類似於masterPage_ChildPage_UserControlParent_YourUserControl_ElementId。但是當你使用FindControl時,你只需要傳遞Element1來獲得控制權 – 2013-02-14 19:09:32
你可以爲它寫一些代碼嗎? – Richard77 2013-02-14 19:12:47
現在還有一些其他的東西,但是如果我的記憶是正確的,那麼你可能可以在下劃線上拆分並搜索最後一個數組元素。嘗試着在調試器中查看__EventTarget中的內容。如果在我回家的時候沒有想到這個,我會試着去演示一個演示 – 2013-02-14 19:16:25