2010-08-23 31 views
10

Tôi nhận được lỗi này nhiều lần.GridView 'OrdersGridView' đã kích hoạt sự kiện RowDeleting không được xử lý

Tải dữ liệu vào GridView hoạt động, nhưng khi tôi muốn xóa một hàng, tôi nhận được lỗi đó.

<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# codebehind - Tôi không thực sự xóa hàng từ cơ sở dữ liệu nhưng đó là một thử nghiệm:

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

Nhưng sau khi nhấp vào, tôi nhận được một trang vàng bigass với lỗi tiếp theo:

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

Trả lời

0

Dường như bạn đang xử lý sự kiện "onrowdeleted", không phải là "RowDeleting" sự kiện

trong đánh dấu của bạn, thay đổi: onrowdeleted = "OrdersGridView_RowDeleted"

để RowDeleting = "OrdersGridView_RowDeleting"

Nhìn một tài liệu cho sự kiện này: bạn cũng sẽ thấy rằng chữ ký của xử lý của bạn sẽ cần phải thay đổi: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.onrowdeleting.aspx người xử lý mới của bạn sẽ trông giống như thế này:

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

sự kiện RowDeleting xảy ra, sau đó sự kiện onrowdeleted. RowDeleting cho phép bạn hủy bỏ sự kiện.

+0

tôi đã thay đổi nó nhưng nó không hoạt động, tôi đã nhận lỗi tương tự Nhưng tôi đã có RowDeleting = "OrdersGridView_RowDeleting" AND the RowDeleted = "OrdersGridVi ew_RowDeleted "lúc đầu và sau khi đọc về rowdeleting, tôi bỏ qua một nguyên nhân mà tôi không muốn hỏi người dùng nếu anh ấy/cô ấy không quan tâm đến việc xóa hàng, tôi chỉ muốn xóa nó. – Janis

+0

Chế độ xem lưới liên kết với dữ liệu và cho phép người nào đó xóa bản ghi: Sự kiện này cho phép bạn biết lưới * cách * cách thực hiện. Lỗi này cho biết "bạn đã yêu cầu tôi xóa bản ghi nhưng bạn chưa cho tôi biết cách thực hiện." RowDeleted được dự kiến ​​sau khi xóa xảy ra. Bạn có thể chỉ ra cách nó không hoạt động (cùng một lỗi, lỗi khác, lblStatus.Text hoặc sValue không có giá trị mong đợi)? cảm ơn –

+0

cùng một lỗi trên cùng một trang lỗi màu vàng, lỗi thậm chí không hiển thị trên nhãn lblstatus của tôi. Coould nó bằng cách nào đó có một cái gì đó để làm với tôi xuất bản các tập tin thay đổi để lưu trữ của tôi. Tôi không có lỗi trên không gian địa phương của tôi. – Janis

11

Có nút Xóa hoặc thậm chí là nút thông thường trong GridView với CommandName xóa, sẽ tự động cố gắng kích hoạt OnRowDeleting. Bạn chỉ có thể thêm nó vào để làm cho mọi thứ hạnh phúc, nhưng không có nó làm bất cứ điều gì để nó không ảnh hưởng đến hành vi xóa của bạn.

Bạn có thể thêm OnRowDeleting để GridView của bạn:

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

Và sau đó trong CodeBehind add bạn:

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

wow, microsoft lol. Tôi đã tìm kiếm hàng giờ, không thể tin rằng có một hành vi như thế trong 4.5. Cảm ơn – Machinegon

+0

@ Joel Beckham, bạn da man. Cảm ơn! – strider

4

thay đổi tên lệnh hàng của bạn từ xóa bất kỳ khác như deleterecord

+0

cảm ơn bạn đã tiết kiệm thời gian của tôi .... :) –

Các vấn đề liên quan