[英]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.