【问题标题】:ImageButton event not firing inside Update PanelImageButton 事件未在更新面板内触发
【发布时间】:2009-02-10 22:08:24
【问题描述】:
这是对我的问题的跟进:
Asp:Label is not shown when visible is set to true?
在上述问题中,我有一些控件的可见性未设置为 false,因为它们不在 UpdatePanel 中。一旦我将控件放在UpdatePanel 中,可见性的切换就起作用了,但这给我带来了另一个问题。我有一个导出到 excel 的ImageButton。当按钮不在UpdatePanel 中时,会触发click 事件,但现在我将它放在UpdatePanel 中时,不会触发click 事件。
我也有一个可以正常工作的下拉菜单。我认为这与ImageButton 没有AutoPostBack 属性有关。
【问题讨论】:
标签:
c#
asp.net
updatepanel
【解决方案1】:
将ChildrenAsTriggers="true" 添加到您的更新面板。如果您有母版页,则可以使用。
如果您的更新面板在 master 中,则无法添加触发器。
【解决方案2】:
我遇到了类似的问题。在我的例子中,ImageButtons 位于一个中继器内,该中继器绑定到 updatepanel。但是我在转发器的ItemDataBound 方法中的代码中使用了Page.RegisterRequiresRaiseEvent(ImageButton),它起作用了。
【解决方案3】:
确保您已将图像按钮关联到 UpdatePanel 上的 PostBackTrigger。如果您使用类似于Matt Berseth's method 的方式导出到 Excel,则必须使用此触发器才能进行导出。
<asp:PostBackTrigger ControlID="ImageButton1"/>
【解决方案4】:
如果您在 itemTemplate 中有一个带有图像按钮的数据列表,则不需要触发器,但 causeValidation = false 是。
【解决方案5】:
不,ImageButtons 没有 AutoPostBack:它们不像普通按钮那样需要它们。
这种行为听起来很奇怪。我想说的第一件事是将 asp:ImageButton 更改为 asp:Button 并查看是否会改变行为。如果不是,那么它是一个 ImageButton 的事实就是一个红鲱鱼。
【解决方案6】:
尝试用菜单(包含单个菜单项)替换 imagebutton 并设置其 imageurl 属性。
【解决方案7】:
将“CausesValidation”属性更改为 false。
【解决方案8】:
myImagebutton.OnClientClick = "return true;";