none
Filtrar datos de un datagridview sin base de datos RRS feed

  • Pregunta

  • Bueno pienso que es algo simple ya que no hay que enlazar base de datos,
    lo que yo quiero es filtrar los datos que en ese momento estan en el datagridview,
    filtrarlos por una columna.. al escribir en el text box..
    Espero sus respuestas.. Gracias..xD¡
    lunes, 30 de abril de 2012 6:36

Todas las respuestas

  • Bueno, creo que es algo simple, solo que no es muy empleado,
    e filtrado un datagridview usando el bindingsource para enlazar, pero ahora
    una ves filtrado esos datos, quiero filtrar lo que ya esta filtrado, osea ya no usar binding source, ni nada de eso,
    porque los datos ya lo tengo en el datagridview, ya no qiero enlazar nada, ahora solo qiero filtrar lo que en ese momento esta en el datagridview..
    y si le ponngo un binding source, me filtra, pero me filtra todo denuevo.. y lo que y quiero es que me filtre solo lo que esta en el datagridview(osea lo que ya ha sido filtrado)
    Por mas que busco por todos lados, no encuentro la solucion..
    Ayudenme pleaseee... UU
    domingo, 29 de abril de 2012 6:39
  • Hola

    Haces una consulta, por ejemplo buscar un nombre
        .... WHERE condicion1

    Y ahora quieres buscar el apellido con los resultados anteriores, por que no ejecutas otra consulta desde cero pero con las dos condiciones

        .... WHERE condicion1 AND condicion2

    domingo, 29 de abril de 2012 7:30
  • es que mire, para llenar el datagridview utilize procedimiento almacenado, y ese lo enlace al binding source
    bueno en este enlace deje mi problem mucho mas detallado, espero que me pueda ayudar.. :
    http://social.msdn.microsoft.com/Forums/es/vbes/thread/12f28556-2482-493b-a211-1b3e602fe9c0
    gracias..xD
    domingo, 29 de abril de 2012 8:01
  • hola

    filtrar datos deberias hacerlo en el datatable directo usando el metodo Select

    Filtering And Sorting Directly in Data Tables

    o sino usando Dataview

    Filtering and Sorting Data Using Data Views

    una opcion adicional es usando linq, para mi esta seria la mejor, pero no se si te animas a filtrar con linq los datos

    por supuesto para esto deberias tomar el datatable que imagino asignas al DatagridView

    Dim dt As DataTable = DirectCast(DataGridView1, DataTable)

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 30 de abril de 2012 7:17
  • Es que no pude solucionarlo de la otra maneras entonces pense,
    y que tal si lo filtro sin usar base de datos... osea filtrar lo que ya antes estaba filtrado con base de datos,
    pero ahora filtrar lo que esta en ese momento en el datagridview, ya no necesito hacer conexion a db porqe los datos estan en el datagridview
    entonces lo unico q necesitaria es filtrar nada mas.. probe con este codigo:

        Private Function CreateDataTable() As DataTable
    
            ' Creamos un nuevo objeto DataTable
            Dim dt As New DataTable
    
            ' Creamos una columna del tipo de dato String
            Dim col = New DataColumn("Columna3", GetType(String))
    
            dt.Columns.Add(col)
    
            ' Devolvemos el objeto DataTable
            Return dt
    
        End Function
        Private Sub txt_buscar2_TextChanged(sender As System.Object, e As System.EventArgs) Handles txt_buscar2.TextChanged
            ' Asignamos el objeto DataTable al control BindingSource
            Me.BindingSource1.DataSource = CreateDataTable()
    
            ' Enlazamos el control DataGridView con el objeto BindingSource
            Me.dgv_cliente.DataSource = Me.BindingSource1
            'Aplicar_Filtro2()
    
            Me.BindingSource1.Filter = "Columna3 = '" & txt_buscar2.Text & "'"
        End Sub

    Pero eso de "columna3" no me cuadra, que es lo que tiene que ir ahi?
    el nombre del header la columna o el numero de la columna..
    porque me sale un error diciendo que no se puede encontrar la columna [nombre]
    Ayudeme please...xD

    lunes, 30 de abril de 2012 7:43
  • esta correcto lo del

    BindingSource1.Filter

    pero no necesitas del resto, si antes habias asignado un datasource al BindingSource (y este lo asignaste al grid), no necesitas nada mas

    Private Sub txt_buscar2_TextChanged(sender As System.Object, e As System.EventArgs) Handles txt_buscar2.TextChanged

    Me.BindingSource1.Filter = String.Format("Columna3 like '{0}%'", txt_buscar2.Text)

    End Sub

    como veras solo filtras el bindingsource que por estas enlazado a el grid deberias filtrar directo, de ultima sino lo ahce directo valida de invocar algun refresh

    en este caso se busca por aproximacion usando el like

    http://social.msdn.microsoft.com/Forums/es/vbes/thread/5bf610bb-0090-4d82-8412-10de4940f1bb

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 30 de abril de 2012 12:19
  • Bueno, fuy mas terco que una mula, pero todo tiene su limite,
    si me salio con solo poner lo que Ud me dijo, pero me filtra todo denuevo..
    no me filtra lo que esta en ese momento, en el datagridview,
    Bueno solo me queda hacerlo con query´s como me dijo anteriormente.
    De todas maneras gracias como siempre..xD
    lunes, 30 de abril de 2012 19:46