GridView.DeleteRow, вызывающий 'RowDeleting' для ItemTemplate Click?

1

Эй, ребята, я пытаюсь удалить строку на кнопке кнопки itemtemplate, но при вызове метода GridView.DeleteRow из моего метода OnRowCommand я получаю ошибку:

The GridView 'MyGridView' fired event RowDeleting which wasn't handled

Насколько я знаю, RowDeleting только RowDeleting когда вы устанавливаете CommandName для Delete?

Вот пример моего GridView и OnRowCommand:

Вид сетки

<asp:GridView ID="MyGridView" runat="server" OnRowCommand="Gv_RowCommand">
        <Columns>
                .
                .
                .
            <asp:TemplateField>
                 <ItemTemplate>
                      <asp:ImageButton ID="ImgBtn" runat="server" CommandName="RemoveRow" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" ImageUrl="img.png" ToolTip="Remove" />
                 </ItemTemplate>
            </asp:TemplateField>
         </Columns>
</asp:GridView>

Код за OnRowCommand

protected void Gv_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "RemoveRow")
            {
                int index = Convert.ToInt32(e.CommandArgument);

                //THROWS EXCEPTION
                Gv_SelectedLineItems.DeleteRow(index);
            }
        }

Я следил за этим примером в msdn, но пока не добился успеха. Пожалуйста помоги.

  • 1
    Рассматривали ли вы просто обработку события с пустым обработчиком?
  • 0
    Так что создать обработчик RowDeleting без тела? Это лучшие практики?
Теги:
gridview

1 ответ

2

Здесь вам не хватает одной информации. Вызов Gv_SelectedLineItems.DeleteRow(index) имеет смысл ожидать функции RowDeleting.

Путаница исходит из того, что вы уже находитесь в обратном вызове кнопки, иногда также выполняете команду delete.

Когда вы DeleteRow в GridView, это требует, чтобы у вас было это событие - в надежде, что вы обработаете все, что вам может понадобиться для предварительного удаления внутри него.

Ваш щелчок на кнопке - "RemoveRow" имеет значения для удаления, просто нажмите кнопку.

Редактировать:

Вам нужно создать обработчик событий RowDeleting. В вашем коде;

protected void Gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{

}

В верхней части вашего GridView вам нужно добавить обработчик событий:

<asp:GridView ID="MyGridView" runat="server" OnRowCommand="Gv_RowCommand" OnRowDeleting="Gv_RowDeleting">
  • 1
    Спасибо за ответ @ Джоно. Не могли бы вы предоставить фрагмент или ресурс, на который я мог бы сослаться? Мне все еще неясно, как поступить.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню