none
Cargar datos en textbox desde grilla con una condición. RRS feed

  • Pregunta

  • Hola colegas!

    Les hago una consulta a ustedes por lo siguiente, espero me pueda ayudar, tengo el siguiente código:

      Sub cargaproductosweb()
            Dim row As DataGridViewRow = DGVDATOS.CurrentRow
            TxtID.Text = CStr(row.Cells(0).Value)
            If TxtID.Text = "" Then
                MessageBox.Show("no hay registro de este producto")
            End If
            TxtNombre.Text = CStr(row.Cells(2).Value)
            TxtPrecio.Text = CStr(row.Cells(4).Value)
            TxtStock.Text = CStr(row.Cells(16).Value)
            TxtHtml.Text = CStr(row.Cells(18).Value)
            WebBrowser1.DocumentText = TxtHtml.Text
            VerEstadoNavegacion()
        End Sub

    Me sucede lo siguiente:

    -Al cargar una grilla me llena los textbox con los valores correspondiente que hay en ella, pero si al intentar traer valores de la grilla y no hay nada no me llena los textbox y se cae, es hay que necesito que no se caiga el programa y me muestre el mensaje que tengo indicado allí, posteriormente reemplazare ese mensaje por una función para insertar registros, pero como puedo solucionarlo estimados?

    Atento a sus comentarios.

    Gracias. 


    • Editado Miguel Oyarzo lunes, 25 de julio de 2016 13:29 corrección de titulo
    lunes, 25 de julio de 2016 13:27

Respuestas

  • "Miguel Oyarzo" escribió:

    > Me sucede lo siguiente:
    >
    > -Al cargar una grilla me llena los textbox con los valores correspondiente
    > que hay en ella, pero si al intentar traer valores de la grilla y no hay
    > nada no me llena los textbox y se cae, ...

    Hola, Miguel:

    Me imagino que la aplicación se "caerá" porque si no hay nada en la "grilla" obtendrás una excepción a la hora de convertir un valor Object en un valor String, ya que estás utilizando la función de conversión CStr:

    > TxtID.Text = CStr(row.Cells(0).Value)

    En lugar de utilizar la función CStr de Visual Basic, utiliza el método Convert.ToString, el cual te devolverá una cadena de longitud cero (String.Empty o "") si el valor de la celda es Nothing:

        Sub CargaProductosWeb()
    
            Dim row As DataGridViewRow = DGVDATOS.CurrentRow
            If (row Is Nothing) Then
                MessageBox.Show("Actualmente no existe ninguna fila.")
                ' Abandonar el procedimiento
                Return
            End If
    
            TxtID.Text = Convert.ToString(row.Cells(0).Value)
            If (TxtID.Text = "") Then
                MessageBox.Show("no hay registro de este producto")
            End If
    
            TxtNombre.Text = Convert.ToString(row.Cells(2).Value)
            TxtPrecio.Text = Convert.ToString(row.Cells(4).Value)
            TxtStock.Text = Convert.ToString(row.Cells(16).Value)
            TxtHtml.Text = Convert.ToString(row.Cells(18).Value)
            WebBrowser1.DocumentText = TxtHtml.Text
            VerEstadoNavegacion()
    
        End Sub

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    lunes, 25 de julio de 2016 16:27
    Moderador