GridView的'OrdersGridView'触发了未处理的事件RowDeleting

Jan*_*nis 11 c# gridview

我一遍又一遍地得到这个错误.

将数据加载到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>
Run Code Online (Sandbox Code Playgroud)

C#codebehind - 我并没有真正删除数据库中的行,但这是一个测试:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但点击后,我得到一个bigass黄页,下一个错误:

GridView的'OrdersGridView'触发了未处理的事件RowDeleting.

Joe*_*ham 12

删除按钮,甚至是删除了CommandName的GridView中的常规按钮,将自动尝试触发OnRowDeleting.您可以添加它以使事情变得愉快,但是没有它做任何事情,因此它不会影响删除的行为.

您可以将OnRowDeleting添加到GridView:

<asp:GridView ID="OrdersGridView" runat="server" AutoGenerateColumns="False" onrowdeleted="OrdersGridView_RowDeleted" OnRowDeleting="OrdersGridView_RowDeleting">
Run Code Online (Sandbox Code Playgroud)

然后在你的CodeBehind中添加:

void OrdersGridView_RowDeleting (object sender, GridViewDeleteEventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)


小智 6

将行命令名称从delete更改为其他任何名称,例如deleterecord


bri*_*ley 0

看起来您正在处理“onrowdeleted”事件,而不是“RowDeleting”事件

在您的标记中,更改: onrowdeleted="OrdersGridView_RowDeleted"

到 RowDeleting="OrdersGridView_RowDeleting"

查看此事件的文档:您还将看到处理程序的签名需要更改: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.onrowdeleting.aspx 你的新处理程序看起来像这样:

 protected void OrdersGridView_RowDeleting(object sender, System.Web.UI.WebControls.GridViewDeleteEventArgs e) { 
 if (e.Exception != null) { 
    lblStatus.Text = e.Exception.ToString(); 
   } 
   else 
   {
    string sValue = ((HiddenField)OrdersGridView.SelectedRow.Cells[1].FindControl("HiddenField1")).Value; lblStatus.Text = sValue; 
    } 
 }
Run Code Online (Sandbox Code Playgroud)

RowDeleting 事件发生,然后 onrowdeleted 事件发生。RowDeleting 可能允许您取消事件。