在Repeater中单击控件中的linkbutton捕获错误的事件处理程序

时间:2013-12-03 16:24:58

标签: asp.net

我有一个包含带有OnClick的LinkBut​​ton的UserControl。 UserControl我在Repeater中使用OnItemCommand插入到单独的UserControl中。

问题是单击LinkBut​​ton会捕获Repeater OnItemCommand而不是LinkBut​​oon OnClick。

简化代码:

MyControl.ascx

<asp:LinkButton runat="server" OnClick="lbtGeneratePDF_Click" Text="Generate pdf" />
...

OtherControl.ascx

<asp:Repeater runat="server" OnItemCommand="grvOffers_Command" ID="grvOffers">
    <ItemTemplate>
        <c:MyControl runat="server" />
        ...
    </ItemTemplate>
</asp:Repeater>

OtherControl.ascx.cs

grvOffers.DataSource = GetOffers(); // Type is List<Offer>
grvOffers.DataBind();

我使用.net版本3.5

1 个答案:

答案 0 :(得分:0)

为什么会出现问题?这就是转发器工作的方式:)只需将命令名称添加到LinkBut​​ton,而不是使用OnClick,然后在CommandName等于按钮的命令名称时从OnItemCommand调用lbtGeneratePDF_Click。您还可以使用CommandArgument传递任何其他信息,例如行ID或您需要的任何信息。

或者在LinkBut​​ton上使用OnCommand事件,而不是OnClick。

为了澄清一点,你不能在Repeater内的服务器控件上进行回发(控件的创建比平时更动态,并且在运行时绑定数据),这就是Command infrastructure存在的原因在第一位 - OnCommand回发事件传播到正确的控件。 OnClick永远不会被提升。

相关问题