1

私は、ショッピング カートからチェックアウトする前 (および支払い iframe に転送する前) に、ショッピング カート リストから削除するアイテムを選択できる Web サイトを構築しています。ショッピング カードの結果は Repeater コントロールにリストされます。リピーターには、データベースからレコードを削除するボタンがあります (これを行うには 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();
            }
        }
    }
}

あなたの助けは大歓迎です!

4

5 に答える 5

1

注意すべきことの 1 つは、バインドするときは、ポストバックしない場合 (またはイベントを処理した後) にのみバインドしていることを確認してください。そうしないと、イベントが失われます。

于 2011-10-19T02:25:40.537 に答える
1

<asp:Button UseSubmitBehavior="False" ... />

于 2011-08-05T17:53:23.763 に答える
0

ページ上の他のコントロールに対してポストバックが発生していますか?ページに「javascript:void(0)」のようなJavaScriptはありますか?

于 2011-02-21T21:25:00.923 に答える