Foros del Web » Programación para mayores de 30 ;) » .NET »

Leer datos de un datagrid

Estas en el tema de Leer datos de un datagrid en el foro de .NET en Foros del Web. Saludos Tengo un datagrid con datos de una tabla, a este datagrid le agregue una columna de tipo checkbox. Ahora entonces como hago para obtener ...
  #1 (permalink)  
Antiguo 29/04/2009, 13:52
 
Fecha de Ingreso: abril-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Leer datos de un datagrid

Saludos

Tengo un datagrid con datos de una tabla, a este datagrid le agregue una columna de tipo checkbox. Ahora entonces como hago para obtener el valor de False o True del checkbox y en caso de ser True traer los datos de esa linea a una variable string?? (Todo esto en vb.NET y la base de datos en mySQL)
  #2 (permalink)  
Antiguo 29/04/2009, 17:42
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: Leer datos de un datagrid

Hola.
Para acceder a los valores de una celda usas algo así:

dataGridview1.Rows(xFila).Cells("estado").value

Donde xFila es el número de tu fila de la grilla, y "estado" es el nombre de la celda.

Pues recorrer la grilla completa usando un FOR que va desde 0 a la cantidad de filas que tiene la grilla menos uno (DataGridView.Rows.Count) o con un FOR EACH
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!
  #3 (permalink)  
Antiguo 04/05/2009, 10:32
 
Fecha de Ingreso: abril-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: Leer datos de un datagrid

Ok, gracias.... ahora existen 2 problemas...

El primero es que al ejecutar el FOR me dice que "Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index", siendo que estoy utilizando el Rows.Count

Código:
Dim x As Integer
            For x = 0 To DataGridView5.Rows.Count
                Dim sel = DataGridView5.Rows(x).Cells(0).Value()
                MsgBox("valor de la celda: " & sel)
            Next
y si le doy el Rows.Count -1 me manda el siguiente error "Column count doesn´t match value count at row 1"

Código:
Dim x As Integer
            For x = 0 To DataGridView5.Rows.Count - 1
                Dim sel = DataGridView5.Rows(x).Cells(0).Value()
                MsgBox("valor de la celda: " & sel)
            Next

El segundo problema que se me presenta que cuando el valor que regresa es False, simplemente no me regresa nada, aparece en blanco.
  #4 (permalink)  
Antiguo 04/05/2009, 11:51
 
Fecha de Ingreso: octubre-2000
Mensajes: 1.692
Antigüedad: 23 años, 6 meses
Puntos: 19
Respuesta: Leer datos de un datagrid

Hola.
Abría que ver en detalle que estás haciendo, algo debes tener por ahí mal para que te de ese problema.

Te paso un ejemplo que lo probé y funciona bien. Fijate que al formulario le agrego un clase persona con una sola propiedad que es de tipo bool y luego creo una coleccion del tipo persona, esto es para no usar acceso a datos y vos lo puedas probar sin dramas.

Código:
Public Class Form1

    Class persona
        Private xEstado As Boolean
        Public Property Estado() As Boolean
            Get
                Return xEstado
            End Get
            Set(ByVal value As Boolean)
                xEstado = value
            End Set
        End Property
    End Class

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim xPer1 As New persona
        Dim xPer2 As New persona
        xPer1.Estado = True
        xPer2.Estado = False

        Dim xPersonas As New List(Of persona)
        xPersonas.Add(xPer1)
        xPersonas.Add(xPer2)

        DataGridView1.DataSource = xPersonas


        For index As Integer = 0 To DataGridView1.Rows.Count - 1
            Dim xValor As String = DataGridView1.Rows(index).Cells(0).Value.ToString()
            MessageBox.Show("El valor es: " & xValor)
        Next
    End Sub
End Class
donde "Cells(0)" ese cero es el primer campo, como solo tengo uno va cero, vos podes probar con número primero para que te asegures que no este poniendo mal el nombre del campo.

Si te da error en "DataGridView1.Rows.Count - 1" proba poner -2 ya que si tu grilla permite agregar datos se agrega una fila nula al final de la grilla

Cualquier cosa avisa.
__________________
PD: Con amor, fe, amor a Dios y amistad podemos hacer un mundo mejor!!!!

Última edición por Trulala de cordoba; 04/05/2009 a las 13:09
  #5 (permalink)  
Antiguo 04/05/2009, 11:54
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Leer datos de un datagrid

y si tratas de poner

Dim Sel as Boolean = Convert.toBoolean(DataGridView5.Rows(x).Cells(0).V alue)
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #6 (permalink)  
Antiguo 04/05/2009, 13:41
 
Fecha de Ingreso: abril-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: Leer datos de un datagrid

Cita:
Abría que ver en detalle que estás haciendo, algo debes tener por ahí mal para que te de ese problema.


Mira en detalle lo que quiero hacer es que al DataGrid traigo de una base de datos los nombres de unas personas, a este DataGrid le agregue la columna de tipo Checkbox, entonces al seleccionar el Checkbox (True) todos los nombres que haya seleccionado que se agreguen en una cadena de texto para estos llevarlos a guardar a otro campo en la tabla de mi base de datos. Todo esto se debe de ejecutar al dar click en un boton "Guardar"

Código:
    Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
        Dim conn As New MySqlConnection
        Dim myCommand As New MySqlCommand

        conn.ConnectionString = myConnString
        myCommand.Connection = conn

 
        myCommand.CommandText = ("INSERT INTO tallerbd.serv_preventivo (unidad, engrasado, motor, diferencial, transmision, comentario, quien) values ('" & TextBox2.Text & "', '" & Format(DateTimePicker2.Value, "yyyy/MM/dd") & "',  '" & Format(DateTimePicker2.Value, "yyyy/MM/dd") & "', '" & Format(DateTimePicker2.Value, "yyyy/MM/dd") & "', '" & Format(DateTimePicker2.Value, "yyyy/MM/dd") & "', '" & TextBox15.Text & "')")

        Try
            conn.Open()
            myCommand.ExecuteNonQuery()
            MsgBox("GUARDADO")
        Catch myerror As MySqlException
            MsgBox("Error al actualizar la base de datos: " & myerror.Message)
        End Try

    End Sub
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:20.