2010-08-23 134 views
10

我得到这个错误一遍又一遍。GridView的'OrdersGridView'触发事件RowDeleting没有处理

将数据加载到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; 
    } 
} 

但点击后,我收到了bigass黄色页面下一个错误:

The GridView 'OrdersGridView' fired event RowDeleting which wasn't handled.

回答

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; 
    } 
} 

RowDeleting事件发生,然后是onrowdeleted事件。 RowDeleting可以让你取消事件。

+0

我:

你可以添加OnRowDeleting到你的GridView:

<asp:GridView ID="OrdersGridView" runat="server" AutoGenerateColumns="False" onrowdeleted="OrdersGridView_RowDeleted" OnRowDeleting="OrdersGridView_RowDeleting"> 

然后在你的代码隐藏插件已经改变它,但它没有工作,我得到了同样的错误 但我有RowDeleting =“OrdersGridView_RowDeleting”和RowDeleted =“OrdersGridVi ew_RowDeleted“,并在阅读了关于rowdeleting后,我跳过了一个原因,我不想问用户他/她是否可以删除该行,我只是想删除它。 – Janis 2010-08-23 00:49:21

+0

网格视图绑定到数据,并允许某人删除记录:此事件让您告诉网格怎么做*。 此错误提示“您要求我删除一条记录,但您没有告诉我如何。” RowDeleted在删除发生后将被设置。 你能指出它是如何工作的(相同的错误,不同的错误,lblStatus.Text或sValue没有预期的值)?谢谢 – 2010-08-23 01:14:50

+0

它在同一个黄色的错误页面上有相同的错误,错误甚至不会显示在我的lblstatus标签上。不管怎么样,我都需要做些什么才能将更改后的文件发布到我的主机上。我没有在我的本地空间的错误。 – Janis 2010-08-23 01:35:12

11

有一个删除按钮,甚至是一个具有删除CommandName的GridView中的常规按钮,将自动尝试触发OnRowDeleting。你可以添加它来让事情变得快乐,但是它没有做任何事情,所以它不会影响你的删除行为。像deleterecord从删除

void OrdersGridView_RowDeleting (object sender, GridViewDeleteEventArgs e) 
{ 
} 
+0

哇,微软大声笑。我一直在寻找几个小时,不能相信有这样的行为在4.5。谢谢 – Machinegon 2013-12-06 20:27:56

+0

@Joel Beckham,你是达人。谢谢! – strider 2014-07-15 16:57:38

4

改变你的行命令名称任何其他

+0

谢谢你救了我的时间.... :) – 2014-03-06 19:07:18