使用ModalPopupExtender时如何在转发器中按下特定按钮

时间:2010-05-13 15:23:22

标签: asp.net repeater modalpopupextender

我的转发器中包含按钮。 ModalPopupExtender用于确认每个按钮的事件。我在转发器外部创建标准面板,并将转发器中的每个按钮从转发器内部连接到这些面板。问题是一旦在弹出窗口中按下按钮我就无法弄清楚如何确定要编辑的转发器的哪一行,因为我无法弄清楚如何识别按下了哪个按钮。 面板:

<asp:Panel ID="pnlRemoveAlert" runat="server" >
<h1 align="center">Remove Phone</h1>
<asp:Button ID="butRemove" runat="server" OnCommand="Handle_Click" CommandName="Remove" Text="Continue"/>
<asp:Button ID="butRemoveCancel" runat="server" Text="Cancel"/>
</asp:Panel>

中继器:

<asp:Repeater ID="repPhoneNumbers" runat="server" OnItemDataBound="setButtonModals"> 
<ItemTemplate>
...
<asp:Button ID="btnStatus" runat="server"/>
<asp:Button ID="dummybutton" runat="Server" Visible="false" /> 
<ajaxToolkit:ModalPopupExtender ID="mpeEnable" runat="server" TargetControlID = "btnStatus 
  CancelControlID="butEnableCancel"
  PopupControlID="pnlEnableAlert"/>
...

事件处理:

Protected Sub Handle_Click(ByVal sender As Object, ByVal e As CommandEventArgs)
'I need to know which row of the repeater to deal with here
End Sub

2 个答案:

答案 0 :(得分:0)

我会设置一个隐藏的输入,其中包含您在客户端点击时使用javascript编辑的行的值,然后在处理程序上请求该变量,这就是您正在编辑的行。

答案 1 :(得分:0)

为什么不直接为CommandArgument指定该行唯一的内容,如电话号码ID或其他内容?

例如,如果你想要行的索引:

<asp:Button ID="btnStatus" runat="server"
    CommandArgument="<%# Container.ItemIndex.ToString() %>" />

然后您可以在处理程序的CommandEventArgs中访问它。