asp.net datagrid modificar registro
Hola,
Estoy empezando con esto del .net.
Tengo una página con un datagrid.
He añadido a cada fila un boton editar , que convierte todo el registro a textbox para poder modificarlo y al validar la modificación tengo el siguiente código:
Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
'identificar fila
Dim keyold As String = DataGrid1.DataKeys(e.Item.ItemIndex).ToString()
Dim key As Integer = DataGrid1.DataKeys(e.Item.ItemIndex)
'obtener los valores modificados de la fila.
Dim elCodOferta, elCodSistema, elDesSistema, elNomCliente As String
Dim elFecfin, elFecInicio As Date
Dim tb As TextBox
tb = CType(e.Item.Cells(2).Controls(0), TextBox)
elCodSistema = tb.Text
tb = CType(e.Item.Cells(3).Controls(0), TextBox)
elDesSistema = tb.Text
tb = CType(e.Item.Cells(4).Controls(0), TextBox)
elCodOferta = tb.Text
tb = CType(e.Item.Cells(5).Controls(0), TextBox)
elNomCliente = tb.Text
tb = CType(e.Item.Cells(6).Controls(0), TextBox)
elFecInicio = tb.Text
tb = CType(e.Item.Cells(7).Controls(0), TextBox)
elFecfin = tb.Text
'encontrar la fila correspondiente en la tabla de datos
Dim r, rold As DataSet1.InstalacionesRow
r = Me.DataSet11.Instalaciones.FindByid(key)
rold = Me.DataSet11.Instalaciones.FindByid(keyold)
'actualizar la fila
rold.CodOferta = elCodOferta
r.CodOferta = elCodOferta
r.CodSistema = elCodSistema
r.DesSistema = elDesSistema
r.FecFin = elFecfin
r.FecInicio = elFecInicio
r.NomCliente = elNomCliente
'enviar los cambios
OleDbDataAdapter1.Update(DataSet11)
DataGrid1.DataBind()
'cambiar el modo de edición
DataGrid1.EditItemIndex = -1
'enlazar los datos
DataGrid1.DataBind()
End Sub
Me da este error:
Referencia a objeto no establecida como instancia de un objeto.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.
Error de código fuente:
Línea 254: 'actualizar la fila
Línea 255:
Línea 256: r.CodOferta = elCodOferta
Si abro una ventana de inspeccion descubro que "r" esta vacio antes de la asignación.
O sea que es como si:
r = Me.DataSet11.Instalaciones.FindByid(key)
no asignara nada.
¿Me podéis dar alguna pista?
Gracias
Estoy empezando con esto del .net.
Tengo una página con un datagrid.
He añadido a cada fila un boton editar , que convierte todo el registro a textbox para poder modificarlo y al validar la modificación tengo el siguiente código:
Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
'identificar fila
Dim keyold As String = DataGrid1.DataKeys(e.Item.ItemIndex).ToString()
Dim key As Integer = DataGrid1.DataKeys(e.Item.ItemIndex)
'obtener los valores modificados de la fila.
Dim elCodOferta, elCodSistema, elDesSistema, elNomCliente As String
Dim elFecfin, elFecInicio As Date
Dim tb As TextBox
tb = CType(e.Item.Cells(2).Controls(0), TextBox)
elCodSistema = tb.Text
tb = CType(e.Item.Cells(3).Controls(0), TextBox)
elDesSistema = tb.Text
tb = CType(e.Item.Cells(4).Controls(0), TextBox)
elCodOferta = tb.Text
tb = CType(e.Item.Cells(5).Controls(0), TextBox)
elNomCliente = tb.Text
tb = CType(e.Item.Cells(6).Controls(0), TextBox)
elFecInicio = tb.Text
tb = CType(e.Item.Cells(7).Controls(0), TextBox)
elFecfin = tb.Text
'encontrar la fila correspondiente en la tabla de datos
Dim r, rold As DataSet1.InstalacionesRow
r = Me.DataSet11.Instalaciones.FindByid(key)
rold = Me.DataSet11.Instalaciones.FindByid(keyold)
'actualizar la fila
rold.CodOferta = elCodOferta
r.CodOferta = elCodOferta
r.CodSistema = elCodSistema
r.DesSistema = elDesSistema
r.FecFin = elFecfin
r.FecInicio = elFecInicio
r.NomCliente = elNomCliente
'enviar los cambios
OleDbDataAdapter1.Update(DataSet11)
DataGrid1.DataBind()
'cambiar el modo de edición
DataGrid1.EditItemIndex = -1
'enlazar los datos
DataGrid1.DataBind()
End Sub
Me da este error:
Referencia a objeto no establecida como instancia de un objeto.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.
Detalles de la excepción: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.
Error de código fuente:
Línea 254: 'actualizar la fila
Línea 255:
Línea 256: r.CodOferta = elCodOferta
Si abro una ventana de inspeccion descubro que "r" esta vacio antes de la asignación.
O sea que es como si:
r = Me.DataSet11.Instalaciones.FindByid(key)
no asignara nada.
¿Me podéis dar alguna pista?
Gracias