ItemCommand事件不会使用Repeater控件触发

时间:2011-02-21 20:49:45

标签: c# asp.net repeater itemcommand

我正在建立一个网站,人们在退出购物车之前(并转移到付款iframe)可以选择要从购物车列表中删除哪些商品。购物卡的结果列在Repeater控件中。 Repeater中有一个Button,用于从数据库中删除记录(使用LINQ to SQL来执行此操作。)

问题是当我点击按钮时,ItemCommand事件不会触发。我试过'response.write(test)'但它仍然不起作用。就好像转发器不能与命令交互。它确实渲染了结果。

如果你能在我接近截止日期前帮助我,我真的很感激,在转向你们之前我已经耗尽了互联网上的所有资源!

以下是代码:

<asp:Repeater ID="RepeaterKoshnichka" runat="server" DataSourceID="LinqDataSource1">
    <ItemTemplate>
        <tr>
            <td background="images/message-bar.gif">
                <div class="message_head" style="float:left"><cite>Производ: <asp:Label ID="lblProizvod" CssClass="red_tx" Text='<%# Eval("Proizvod") %>' runat="server"></asp:Label> / Тип на Претплата: <asp:Label ID="lblPretplata" runat="server" Text='<%# Eval("Tip") %>' CssClass="red_tx"></asp:Label></cite></div>
                <div class="message_head" style="float:right"><cite>Цена: <asp:Label ID="lblCena" CssClass="red_tx" Text='<%# Eval("Cena") %>' runat="server"></asp:Label>&nbsp;
                    <asp:Button ID="Button2" CssClass="main_tx" CommandName="Delete" CommandArgument='<%# Eval("NDetID") %>' runat="server"
                        Text="Отстрани" /></cite>
                </div> 
            </td>
        </tr>
    </ItemTemplate>
</asp:Repeater>

protected void RepeaterKoshnichka_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "Delete")
    {
        if (Request.Form[e.CommandArgument.ToString()] != null)
        {
            if (Page.User.Identity.IsAuthenticated)
            {
                var nar = new DataClasses1DataContext();
                Guid detnar = new Guid(e.CommandArgument.ToString());
                var query = from c in nar.Naracka_Dets
                    where c.NDetID == detnar
                    select c;

                foreach (var c in query)
                {
                    nar.Naracka_Dets.DeleteOnSubmit(c);
                }

                nar.SubmitChanges();
                lblSuma.Text = ((Button)e.CommandSource).ToString();
            }
        }
    }
}

非常感谢您的帮助!

5 个答案:

答案 0 :(得分:1)

您需要添加onitemcommand事件处理程序链接,即

OnItemCommand="RepeaterKoshnichka_ItemCommand"

答案 1 :(得分:1)

&lt; asp:Button UseSubmitBehavior =“False”... /&gt;

答案 2 :(得分:1)

有一点需要注意,当你有约束力时,请确保你只是在没有回复的情况下(或在你处理完事件之后)才有约束力,否则你将失去这个事件。

答案 3 :(得分:0)

您网页上的其他任何控件都会发回帖子吗?你的网页上是否有任何javascript,例如&#34; javascript:void(0)&#34; ?

答案 4 :(得分:0)

我有一个类似的问题,没有解决我的问题。最终(在搜索了很长时间之后)我发现我在页面上的文本字段更高,但是我没有验证,所以我只是将CausesValidation="false"添加到转发器中的按钮并解决问题。 / p>