Событие ItemCommand не запускается с помощью элемента управления Repeater - PullRequest
1 голос
/ 21 февраля 2011

Я создаю веб-сайт, с помощью которого люди, прежде чем оформить корзину (и перейти к платежному фрейму), могут выбрать, какие элементы из списка корзины для покупок удалить.Результаты с карты покупок перечислены в элементе управления 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();
            }
        }
    }
}

Ваша помощь очень ценится!

Ответы [ 5 ]

1 голос
/ 19 октября 2011

Стоит отметить, что, когда вы связываете, убедитесь, что вы связываете только если НЕ отправлять обратно (или после обработки события), иначе вы потеряете событие.

1 голос
/ 05 августа 2011

1 голос
/ 21 февраля 2011

Вам необходимо добавить ссылку на обработчик события onitemcommand, т.е.

OnItemCommand="RepeaterKoshnichka_ItemCommand"
0 голосов
/ 31 октября 2013

У меня была похожая проблема, и ничто не решило мою проблему.В итоге (после очень долгого поиска) я обнаружил, что у меня есть текстовое поле выше на странице, которая не проверялась, поэтому я просто добавил CausesValidation="false" к кнопке в повторителе, и проблема решена.

0 голосов
/ 22 февраля 2011

Публикация сообщений происходит для других элементов управления на вашей странице? У вас есть какой-либо javascript на вашей странице, например "javascript: void (0)"?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...