我正在为ASP.NET应用程序开发一个复合控件,并且最初开发了控件以使用ITemplate来创建其子控件。子控件中将有一系列按钮,这些按钮将在根控件中处理。我在按钮上使用带有CommandName / CommandArgument属性的OnBubbleEvent来连接它。一切都很好......直到我将模板更改为控件。
当我将模板转换为Control并在我的根控件中调用Controls.Add(new ChildControl())而不是InstantiateIn(this)时,事件冒泡不再有效。
知道为什么吗?
(一切,我的意思是一切,其他都一样。)
答案 0 :(得分:0)
您的复合控件必须实现INamingContainer接口才能接收OnBubbleEvent调用。 CompositeControl类已经实现了这个接口......在你的情况下,它停止工作不是因为ITemplate的事情,而是因为你将继承从 CompositeControl 更改为 Control 。
请参阅:http://msdn.microsoft.com/en-us/library/system.web.ui.control.onbubbleevent.aspx
他们在那里说。