ASP.NET 复合控件不会冒泡事件,但模板会冒泡事件
我正在为 ASP.NET 应用程序开发一个复合控件,最初开发该控件是为了使用 ITemplate 创建其子控件。子控件中将有一系列要在根控件中处理的按钮。我在按钮上使用带有 CommandName/CommandArgument 属性的 OnBubbleEvent 将其全部连接起来。一切都很顺利......直到我将模板更改为控件。
当我将模板转换为 Control 并在根控件中调用 Controls.Add(new ChildControl()) 而不是 InstantiateIn(this) 时,事件冒泡不再起作用。
知道为什么吗?
(一切,我的意思是一切,其他都是一样的。)
I am developing a composite control for an ASP.NET application and just by chance initially developed the control to use an ITemplate to create its child controls. There will be a series of buttons within the child controls that are to be handled in the root control. I am using the OnBubbleEvent with CommandName/CommandArgument properties on the buttons to wire it all up. And everything worked great... until I changed the templates to controls.
When I converted the template to a Control and called Controls.Add(new ChildControl()) in my root control instead of InstantiateIn(this), event bubbling no longer works.
Any idea why?
(Everything, and I mean everything, else is the same.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的复合控件必须实现 INamingContainer 接口才能接收 OnBubbleEvent 调用。 CompositeControl 类已经实现了此接口...在您的情况下,它停止工作不是因为 ITemplate 的事情,而是因为您将继承从 CompositeControl 更改为 Control。
请参阅:http://msdn.microsoft。 com/en-us/library/system.web.ui.control.onbubbleevent.aspx
他们在那里说的。
Your composite control must implement INamingContainer interface in order to receive OnBubbleEvent calls. The CompositeControl class already implements this interface... in your case it stopped working not because of ITemplate thing, but because you changed inheritance from CompositeControl to Control.
See this: http://msdn.microsoft.com/en-us/library/system.web.ui.control.onbubbleevent.aspx
they say it there.