2010-08-23 7 views
10

estoy recibiendo este error una y otra vez.El GridView 'OrdersGridView' disparó RowDeleting evento que no fue manejado

cargando los datos en el GridView funciona, pero cuando quiero eliminar una fila que estoy recibiendo ese error.

<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# código subyacente - No estoy realmente borrar la fila de la base de datos, pero es una prueba:

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

Pero después de hacer clic, me sale una página amarilla bigass con el siguiente error:

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

Respuesta

0

parece que está manejando el evento "onrowdeleted", no es el caso "RowDeleting"

en su margen de beneficio, cambie: onrowdeleted = "OrdersGridView_RowDeleted"

a RowDeleting = "OrdersGridView_RowDeleting"

Mira a la documentación para este evento: también se verá que la firma de su manejador tendrá que cambiar: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.onrowdeleting.aspx su nuevo controlador buscará calle detrás de esta manera:

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

caso RowDeleting sucede, entonces el evento onrowdeleted. El RowDeleting probally le permite cancelar el evento.

+0

I' he cambiado, pero que no funcionaban, tengo el mismo error pero tuve la RowDeleting = "OrdersGridView_RowDeleting" Y la RowDeleted = "OrdersGridVi ew_RowDeleted "al principio y después de leer sobre la eliminación de hileras, me salté esa porque no quiero preguntarle al usuario si está bien con borrar la fila, solo quiero borrarla. – Janis

+0

La vista de cuadrícula se une a los datos y permite que alguien elimine un registro: este evento le permite decirle a la cuadrícula qué * cómo * hacer eso. Este error está diciendo "que me han preguntado para eliminar un registro, pero no me han dicho cómo." RowDeleted está programado después de la eliminación. ¿Puede indicar cómo no funcionó (mismo error, error diferente, lblStatus.Text o sValue no tenían el valor esperado)? gracias –

+0

es el mismo error en la misma página de error de color amarillo, el error ni siquiera se muestra en mi etiqueta lblstatus. Coould de alguna manera tiene algo que ver conmigo publicando los archivos alterados en mi host. No tengo el error en mi espacio local. – Janis

11

Tener un botón Borrar, o incluso un botón regular en un GridView con un CommandName de borrado, intentará automáticamente al fuego OnRowDeleting. Simplemente puede agregarlo para hacer las cosas felices, pero no haga que haga nada para que no afecte el comportamiento de su eliminación.

Se podría añadir OnRowDeleting a su GridView:

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

Y luego, en su CodeBehind complemento:

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

wow, microsoft lol. He estado buscando durante horas, no puedo creer que haya un comportamiento como ese en 4.5. Gracias – Machinegon

+0

@Joel Beckham, tú da man. ¡Gracias! – strider

4

cambio de nombre de su comando Línea de eliminar a cualquier otro como deleteRecord

+0

gracias me salvaste el tiempo .... :) –

Cuestiones relacionadas