Эй, ребята, я пытаюсь удалить строку на кнопке кнопки 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, но пока не добился успеха. Пожалуйста помоги.
Здесь вам не хватает одной информации. Вызов 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">