[英]asp.net user control event propagation trouble
我有一個簡單的用戶控件,其中包含一些按鈕,用於觸發我希望由控件使用頁面處理的事件。 我有我的代碼設置:
public event EventHandler Cancel;
public event EventHandler Confirm;
public void Confirm_Click(object sender, EventArgs e)
{
if (Confirm != null)
Confirm(this, e);
}
public void Cancel_Click(object sender, EventArgs e)
{
if (Cancel != null)
Cancel(this, e);
}
但是當我嘗試從使用控件的頁面加載事件的頁面調用這些時,我沒有得到任何自定義事件
ASPX代碼
<%@ Register TagPrefix="btg" TagName="CustomControl" Src="~/Search/CustomControl.ascx" %>
<btg:CustomControl ID="btgControl" runat="server" ></btg:CustomControl>
這可能是因為用戶控件中的按鈕位於更新面板中?
你不應該看到方法。 你應該看到事件。
在父頁面的加載中,您需要執行以下操作:
myUserControl.Cancel += new EventHandler(myUserControl_Cancel);
您可以點擊tab,tab來自動生成方法存根。 這將是:
void myUserControl_Cancel(object sender, EventArgs e) {}
然后,在用戶控件的方法中調用此代碼后將觸發此代碼。 為了激活該代碼,您必須將事件分配給用戶控件上的按鈕事件。
編輯:myUserControl是您的用戶控件的ID。 此外,有些人認為事件處理程序應該在頁面的init方法中。
編輯:
您的用戶控件是否在頁面中正確引用? 即您是在web.config中注冊用戶控件還是在頁面中使用引用指令?
另外,您是否嘗試過清潔解決方案並進行重建? 如果動態創建/加載了用戶控件,則必須在與實例化控件相同的范圍內連接事件。 要動態加載用戶控件,您必須在頁面中放置占位符並執行以下操作:
UserControl control = Page.LoadControl("~/ControlPath/ControlName.ascx");
((MyUserControlClass)control).Cancel += += new EventHandler(myUserControl_Cancel); // etc...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.