none
Opciones para realizar búsquedas en un Control Datagridview enlazado a Datos RRS feed

  • Pregunta

  • Me gustaría saber que opciones tengo para realizar búsquedas en un control Datagridview enlazado a datos. Con esto me refiero a una datagridview que lleno con un datatable.

    Entiendo que puedo hacerlo manejando consultas sql, he leído algo sobre listas genéricas, linq, dataview, pero entre tanto ya no se cuál es el más efectivo pensando en una aplicación real que tenga controles que se llenen con cientos o hasta miles de registros.

    Por lo tanto me gustaría saber sus opiniones, para que pueda profundizar más en el tema ya que he visto muchas formas de llenar un control Datagridview y algunos recomiendan datatables, listas genéricas(aún no comprende casi esto), etc.

    De antemano muchas gracias y espero sus opiniones y recomendaciones.

    martes, 22 de marzo de 2016 4:03

Respuestas

  • Desde luego, por claridad del código y por rendimiento, es recomendable utilizar listas de tipos que definan el objeto.

    El DataTable da muchos problemas de rendimiento, especialmente si quieres manejar grandes volúmenes de información.

    En cuanto a lo de realizar las búsquedas en los datos en el DataGridView deberías separar la lógica de la presentación. Es decir, piensa en el DataGridView como un medio para presentar los resultados no como un contenedor de datos sobre los que trabajar.

    Las búsquedas o cualquier otra operación que desees realizar sobre los datos realízalas sobre la lista de objetos que contienen la información y, una vez que tienes el resultado buscado, envía este resultado al DataGridView para que se muestre en pantalla.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta Ciao Manuel martes, 22 de marzo de 2016 19:19
    martes, 22 de marzo de 2016 7:59

Todas las respuestas

  • Desde luego, por claridad del código y por rendimiento, es recomendable utilizar listas de tipos que definan el objeto.

    El DataTable da muchos problemas de rendimiento, especialmente si quieres manejar grandes volúmenes de información.

    En cuanto a lo de realizar las búsquedas en los datos en el DataGridView deberías separar la lógica de la presentación. Es decir, piensa en el DataGridView como un medio para presentar los resultados no como un contenedor de datos sobre los que trabajar.

    Las búsquedas o cualquier otra operación que desees realizar sobre los datos realízalas sobre la lista de objetos que contienen la información y, una vez que tienes el resultado buscado, envía este resultado al DataGridView para que se muestre en pantalla.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta Ciao Manuel martes, 22 de marzo de 2016 19:19
    martes, 22 de marzo de 2016 7:59
  • Hola:

    Una cosa es la búsqueda que la harás a través del datagridview que normalmente lo harás con una consulta Select al objeto datable tal como indicas en tu correo. Otra cosa es como rellenas previamente ese datagridview, las fórmulas para su relleno pueden ser diversas, si son procesos de inserción por ejemplo, puedes utilizar consultas Insert rellenadas en tu código, o bien, también puedes utilizar listas genéricas para rellenar tu datagridview e incluso puede rellenarlo a través de XML, etc.

    Como tu pregunta se refiere a como buscar un dato en tu datagridview, puedes hacer lo siguiente, te pongo un ejemplo el cuál tendrá que adaptar a tus necesidades ya que desconozco los nombres de los campos, etc.

    Public Sub BuscarEmpresa()
            Dim Criterio As String
            Criterio = VarGlobal.StrCodEmpresa
    
            If Criterio = String.Empty Then Return
    
            DataGridView1.CurrentCell = Nothing
    
            For Each i As DataGridViewRow In DataGridView1.Rows
                If Convert.ToString(i.Cells(rm.GetString("Codigo")).Value).IndexOf(Criterio, StringComparison.CurrentCultureIgnoreCase) > -1 Then
                    DataGridView1.CurrentCell = i.Cells(rm.GetString("Codigo"))
                    'MessageBox.Show(CStr(i.Cells(rm.GetString("Codigo")).Value))
                    Exit For
                End If
            Next
    
            'Referenciamos la fila
            Dim row As DataGridViewRow = DataGridView1.CurrentRow
           'Mostramos los objetos con los datos del datagridview.
            TxtNombreEmpresa.Text = Convert.ToString(row.Cells(1).Value) 'Nombre empresa
            txtNIF.Text = Convert.ToString(row.Cells(2).Value) 'NIF empresa
            txtCodCnae.Text = Convert.ToString(row.Cells(3).Value) 'CNAE
    
    .../...
    end sub

    Eso es principalmente una forma de poder buscar por un campo "Codigo" un valor y que te lo muestre en unos textboxs los datos que corresponden a la fila donde se encuentra el valor "Código".

    Un cordial saludo.

    Gemma

    martes, 22 de marzo de 2016 8:05
  • Ahora entiendo que me conviene usar las listas. ¿Quiere decir que todas las operaciones por más simples que sean me conviene hacerlos sobre esta?

    De todos modos agradezco tu respuesta, ya me pondré a investigar más.


    martes, 22 de marzo de 2016 19:10
  • Gracias Gemma, nunca había visto el planteamiento que me das veré que tal me funciona. Aunque principalmente lo que busco es usar las técnicas más adecuadas o que tengan el mejor rendimiento, ya que no todos recomiendan hacer las operaciones sobre el control o llenar usando datatables por ejemplo, cosa que yo he acostumbrado a hacer. Sin embargo quiero mejorar, esa es la intención.

    Saludos.

    martes, 22 de marzo de 2016 19:13