我有一个Repeater
包含嵌套的自定义CompositeControl
控件,其中包含以下方式:
Wrapper
Head
Body
<asp:UpdatePanel ID="noteArea" UpdateMode="Conditional" ChildrenAsTriggers="false" runat="server" >
<ContentTemplate>
<asp:Repeater ID="noteRepeater" runat="server" EnableViewState="true" OnItemDataBound="noteRepeater_ItemDataBound" OnItemCommand="noteRepeater_ItemCommand">
<ItemTemplate>
<asp:Button runat="server" CommandName="edit" ID="testButton" />
<easit:NoteControl ID="noteControl" runat="server" />
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
Head
控件包含两个Buttons
。当我点击其中任何一个时,ItemCommand
Repeater
事件都不会被调用。如果我将按钮向右移动到ItemTemplate
,它就可以正常工作。但我需要把它们留在原地。
在控制层次结构中冒泡它们的正确方法是什么?
答案 0 :(得分:3)
您可以让控件抛出您的页面(使用转发器)可以侦听的事件。初始化每个控件时,可以提供事件所需的任何信息。
答案 1 :(得分:1)
这些控件在ItemTemplate之外..因此它们实际上无法触发ItemCommand。
ItemCommand具有特定属性,如果它们位于ItemTemplate之外(例如ItemIndex,用于确定所单击项目的索引),则按钮将无法使用这些属性