asp.net datagrid modificar registro

juanlu
27 de Agosto del 2003
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