在链接按钮单击时,不会触发Repeater的Item命令事件

时间:2012-02-06 21:29:29

标签: c# asp.net

我的转发器ItemCommand事件有问题。 当我单击链接按钮时,它不会触发。 我错过了任何环境变量

ASPX代码

<table>
    <!-- repResearchers begin, 0=display name, 1=url -->
    <asp:Repeater ID="repExtResearchers" Runat="server" OnItemCommand="deleteResearcher">
        <ItemTemplate>
            <tr>
                <td>
                    <a href="<%# ((System.String[])Container.DataItem)[1] %>">
                    <%# ((System.String[])Container.DataItem)[0] %></a>
                </td>
                <td>
                    <asp:LinkButton ID="lbDelete" runat="server" CommandName="del" 
                    CommandArgument = "<%# ((System.String[])Container.DataItem)[1]%>"
                    OnClientClick="if (!confirm('Are you sure do you want to delelte it?')) return false;">Delete</asp:LinkButton>
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
</table>

CS

protected void deleteResearcher(object sender, RepeaterCommandEventArgs e)
{
    string a;
    lblError.Text = e.CommandArgument.ToString();
    lblError.Visible = true;
}

4 个答案:

答案 0 :(得分:4)

确保你不要在每次回发时重新绑定转发器。

If (Page.IsPostBack)
    return;

repExtResearchers.DataSource = ...
repExtResearchers.DataBind();

希望有所帮助。

答案 1 :(得分:2)

我敢肯定 - 因为这是一个非常古老的问题 - 这已经得到了回答,但对于那些可能遇到我遇到的问题的人来说......

如果您正在使用任何Ajax控件,则它们都需要验证组。我有一个很长的页面,我试图通过这样做缩短,所以我没有注意到Ajax Control Toolkit的ajax控件抛出错误而没有验证。我将LinkBut​​ton的验证组设置为无处可寻的东西,并开始触发。

希望这可以帮助别人。

答案 2 :(得分:0)

它不会解决您的问题,但更改

OnClientClick="if (!confirm('Are you sure do you want to delelte it?')) return false;"

OnClientClick="return confirm('Are you sure do you want to delelte it?')"

您的代码使用双重否定来确认肯定。

答案 3 :(得分:0)

我在OnCommand中使用LinkButton时遇到此问题,我有一个空的href=""。当我删除额外属性时,它会回发。