none
Guardar el valor de una celda de un gridview en una vaiable tipo string RRS feed

  • Pregunta

  • Hola amigos

    Estoy intentando obtener un dato de una celda que esta en un gridview, esto para poder hacer una actualización en el registro en la BD, pero no puedo guardar el dato en una variable tipo string, aquí va el código

    Protected Sub btnActivaDesactivaItinerario_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnActivaDesactivaRegistro.Click
            Dim QUERY As String
            Dim ConnectionString As String = ConfigurationManager.ConnectionStrings("SiteMapConnectionString").ConnectionString
            Using conn As New SqlConnection(ConnectionString)
                conn.Open()
                For Each row As GridViewRow In gvRegistros.Rows
                    Dim NumReg As String
                    NumReg = gvRegistros.SelectedRow.Cells(0).Text
                    QUERY = "update dbo.Empleado set Activo = 0 where NumeroRegistro = " & NumReg & ";"
                        Dim cmd As New SqlCommand(QUERY, conn)
                        cmd.ExecuteNonQuery()
                Next
            End Using
        End Sub

    La idea de este código es que me haga un recorrido por todos los registros de un gridview y me almacene el dato que tengo en la primer celda de cada registro en la variable "NumReg", pero cuando hago la comprobación en la linea "NumReg = gvRegistros.SelectedRow.Cells(0).Text"me arroja el siguiente error "Referencia a objeto no establecida como instancia de un objeto.", les agradezco su ayuda en esto... llevo mas de tres días tratando de solucionar este error.

    martes, 26 de mayo de 2015 14:23

Respuestas

  • ya lo resolvi,

    El problema era que estaba llamando al gridview dentro de la rutina  For Each, y en este ya estaba declarado, entonces lo interpretaba como un objeto aparte... en resumidas cuentas el error era que:

    Estaba escrito asi: NumReg = gvRegistros.SelectedRow.Cells(0).Text

    Pero al estar declarado el gridview como objeto dentro de la rutina For Each, se debe escribir asi:

    NumReg = row.Cells(0).Text

    eso es todo, muchas gracias !!

    miércoles, 27 de mayo de 2015 20:52

Todas las respuestas

  • De preferencia inicializa las variables.

    Algo asi: Dim QUERY As String = "";

    Es posible que no este jalando ningun valor y tu string este vacio.

    Saludos.

    miércoles, 27 de mayo de 2015 20:16
  • Gracias Hector por tu respuesta,  pero no es eso, ya que la variable query esta bien inicializada, y el query funciona perfectamente, es en la linea "NumReg = gvRegistros.SelectedRow.Cells(0).Text", que me arroja el  error "Referencia a objeto no establecida como instancia de un objeto.", el problema es que no he encontrado la forma de traer el dato que esta en el bounfield indicado, se supone que uno lo obtiene tal y como esta en el codigo... pero en este caso esta fallando y no se donde esta el error.
    miércoles, 27 de mayo de 2015 20:25
  • ya lo resolvi,

    El problema era que estaba llamando al gridview dentro de la rutina  For Each, y en este ya estaba declarado, entonces lo interpretaba como un objeto aparte... en resumidas cuentas el error era que:

    Estaba escrito asi: NumReg = gvRegistros.SelectedRow.Cells(0).Text

    Pero al estar declarado el gridview como objeto dentro de la rutina For Each, se debe escribir asi:

    NumReg = row.Cells(0).Text

    eso es todo, muchas gracias !!

    miércoles, 27 de mayo de 2015 20:52