ASP.NET复合控件不会冒泡事件,但模板会冒泡

时间:2011-03-18 20:12:31

标签: asp.net event-bubbling composite-controls itemplate

我正在为ASP.NET应用程序开发一个复合控件,并且最初开发了控件以使用ITemplate来创建其子控件。子控件中将有一系列按钮,这些按钮将在根控件中处理。我在按钮上使用带有CommandName / CommandArgument属性的OnBubbleEvent来连接它。一切都很好......直到我将模板更改为控件。

当我将模板转换为Control并在我的根控件中调用Controls.Add(new ChildControl())而不是InstantiateIn(this)时,事件冒泡不再有效。

知道为什么吗?

(一切,我的意思是一切,其他都一样。)

1 个答案:

答案 0 :(得分:0)

您的复合控件必须实现INamingContainer接口才能接收OnBubbleEvent调用。 CompositeControl类已经实现了这个接口......在你的情况下,它停止工作不是因为ITemplate的事情,而是因为你将继承从 CompositeControl 更改为 Control

请参阅:http://msdn.microsoft.com/en-us/library/system.web.ui.control.onbubbleevent.aspx

他们在那里说。