2010-08-23 100 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