我一次又一次地犯这个错误。
将数据加载到gridview中是可行的,但是当我想删除一行时,我会得到这个错误。
<asp:GridView ID="OrdersGridView" runat="server" AutoGenerateColumns="False" onrowdeleted="OrdersGridView_RowDeleted">
<Columns>
<asp:TemplateField HeaderText="Product Name">
<ItemTemplate>
<asp:HiddenField runat="server" ID="HiddenField1" Value='<%#Eval("oid")%>'></asp:HiddenField>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="titel" HeaderText="Name" />
<asp:BoundField DataField="oid" HeaderText="Itemno" />
<asp:BoundField DataField="prijs" HeaderText="Price" />
<asp:CommandField ButtonType="Link" CausesValidation="false" HeaderText="Update" ShowDeleteButton="True" />
<asp:BoundField DataField="prijs" HeaderText="Subtotal" />
</Columns>
</asp:GridView>
C代码隐藏-我不是真的要从数据库中删除行,而是一个测试:
protected void OrdersGridView_RowDeleted(object sender, System.Web.UI.WebControls.GridViewDeletedEventArgs e)
{
if (e.Exception != null)
{
lblStatus.Text = e.Exception.ToString();
}
else
{
string sValue = ((HiddenField)OrdersGridView.SelectedRow.Cells[1].FindControl("HiddenField1")).Value;
lblStatus.Text = sValue;
}
}
但点击后,我会看到一个巨大的黄色页面,并显示下一个错误:
GridView“OrdersGridView”触发了未处理的事件行删除。
最佳答案
如果GridView中有一个delete按钮,或者命令名为delete的常规按钮,则会自动尝试启动onRowDeleting。你可以把它添加进去让事情变得快乐,但是不要让它做任何事情,这样它就不会影响删除的行为。
您可以将OnRowDeleting添加到GridView中:
<asp:GridView ID="OrdersGridView" runat="server" AutoGenerateColumns="False" onrowdeleted="OrdersGridView_RowDeleted" OnRowDeleting="OrdersGridView_RowDeleting">
然后在代码隐藏中添加:
void OrdersGridView_RowDeleting (object sender, GridViewDeleteEventArgs e)
{
}