none
Desvincular datasource de datagridview RRS feed

  • Pregunta

  • Hola amigos.

    Hago una consulta SQL y muestro en resultado en una datagridview

    Luego hago otra consulta de la misma tabla para mostrar los datos en otro datagridview, pero como la primera esta vinculada a la misma tabla la primera datagridview tambien mustra los datos de la segunda consulta.

    ¿Como puedo evitar esto?

    Seria algo como datagridview1.datasource=nothing, pero esto obviamente no funciona porque limpia totalmente los datos de la primera consulta.

    Busco hacer dos consultas diferentes de la misma tabla y mostrarlas en dos datagridview en el mismo formulario

    Gracias y larga vida al foro

    domingo, 24 de marzo de 2019 23:57

Todas las respuestas

  • Hola, como es que vienes haciendo el llenado del datagridview por código o algún asistente, si llenas los datagridview con dos instancias de objeto diferentes , no deberían reflejar cambios en ambos

        Private Sub btnListarDatos_Click(sender As System.Object, e As System.EventArgs) Handles btnListarDatos.Click
            Dim dt1 As New DataTable
            dt1 = ListarDatos()
            DataGridView1.DataSource = dt1
    
            Dim dt2 As New DataTable
            dt2 = ListarDatos()
            DataGridView2.DataSource = dt2
        End Sub
        Private Sub btnLimpiarGrilla1_Click(sender As System.Object, e As System.EventArgs) Handles btnLimpiarGrilla1.Click
            Dim dt1 As New DataTable
            dt1 = TryCast(DataGridView1.DataSource, DataTable)
            dt1.Rows.Clear()
        End Sub



    Votar y marcar respuestas es agradecer.
    Saludos.
    Lima-Perú

    lunes, 25 de marzo de 2019 3:17
  • Hola:

    Por lo que explicas (y lo que he entendido), cuando haces la consulta SQL guardas el resultado en un datatable, no?

    Así, al hacer una segunda consulta sobre el MISMO datatable, lo que haces es sustituir los datos por los nuevos. El problema no lo tienes en el DataGrid, sino que usas el mismo datatable para dos conjuntos de datos.

    Posibles soluciones:

    1) usar 2 datatables, uno para cada consulta SQL.

    2) añadir TODOS los datos en el mismo datatable y usar vistas (DataView) para mostrar lo que quieras en cada datagrid.

    Espero que te sirva.

    Un saludo

    lunes, 25 de marzo de 2019 8:18
  • Gracias a los dos por responder.

    En realidad lo que pretendia era mostrar el resultado de dos consultas de la misma tabla en dos datagrid sin complicarme la vida y para ello usaba tableadapters y bindingsources que supongo que Microsoft los puso ahí para ser usados:

    Boton1:

    DetalleTableadapter.ConsumoEntrefechas(DSet.Detalle, fechainicio, fechafin)
            datagridview.DataSource = DetalleBindingsource

    Boton2: (logicamente con otros parametros)

    DetalleTableadapter.ConsumoEntrefechas(DSet.Detalle, fechainicio, fechafin)
            datagridview.DataSource = DetalleBindingsource



    • Propuesto como respuesta Carlos_Ruiz_M jueves, 28 de marzo de 2019 15:37
    lunes, 25 de marzo de 2019 10:43
  • Tal como te hemos comentado, si usas la misma tabla (DSet.Detalle) y el mismo bindingsource (DetalleBindigSource), aunque se lo asignes a 2 datagrids diferentes, veras siempre lo mismo (es la misma tabla y el mismo bindingsource).

    Puedes comprobarlo (por ejemplo), cambiando un dato de uno de los DataGrid, verás como automáticamente también cambia en el otro, estás viendo lo mismo.

    lunes, 25 de marzo de 2019 14:03