Repeater命令中的LinkBut​​ton不会在单击时触发

时间:2017-11-21 19:03:52

标签: asp.net webforms

我在Repeater中有一个linkbutton,它需要在单击时触发代码隐藏中的方法,但是当单击LinkBut​​ton时该方法永远不会执行。以下是Repeater的HTML:

<asp:Repeater ID="rptFeatures" runat="server">
    <ItemTemplate>
        <asp:LinkButton runat="server" Text='<%# Eval("Name") %>' 
            CommandName="listItem_Click" 
            CommandArgument='<%# DataBinder.Eval(Container.DataItem, "AccessListItemId") %>'>
        </asp:LinkButton><br />
    </ItemTemplate>
</asp:Repeater>

以下是需要触发onClick的方法:

protected void listItem_Click(object sender, RepeaterCommandEventArgs e)
{
    throw new NotImplementedException();
}

该方法永远不会被调用,因为我在NotEmplementedException上有一个断点,只是为了看它是否命中。有人可以告诉我这里我做错了吗?

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

试试这个:

<asp:Repeater ID="rptFeatures" runat="server" OnItemCommand="rptFeatures_OnItemCommand">
    <ItemTemplate>
        <asp:LinkButton runat="server" Text='<%# Eval("Name") %>' 
                CommandName="listClick"
                CommandArgument='<%# DataBinder.Eval(Container.DataItem, "AccessListItemId") %>'>
        </asp:LinkButton><br />
    </ItemTemplate>
</asp:Repeater>

protected void rptFeatures_OnItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName.Equals("listItem_Click"))
    {
        // your code
    }    
}

答案 1 :(得分:1)

而不是CommandName使用onClick事件。

的OnClick = “listItem_Click”

答案 2 :(得分:0)

我需要将“OnItemCommand = listItem_ItemCommand”添加到Repeater到Baseer Haider的答案。转发器现在看起来像这样:

 <asp:Repeater ID="rptFeatures" runat="server" OnItemCommand="listItem_ItemCommand">
                        <ItemTemplate>
                            <asp:LinkButton runat="server" Text='<%# Eval("Name") %>' CommandName="listClick"  CommandArgument='<%# DataBinder.Eval(Container.DataItem, "AccessListItemId") %>'></asp:LinkButton><br />
                        </ItemTemplate>
                    </asp:Repeater>

现在它使用包含的参数命中方法:

        protected void listItem_ItemCommand (Object source, RepeaterCommandEventArgs e)
    {
        if (e.CommandName.Equals("listItem_Click"))
        {
            // your code
        }

    }