我一次又一次地犯这个错误。
将数据加载到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)
{
}

08-07 18:12