Visual Basic.NET - Filtrar data grid con dataset

   
Vista:

Filtrar data grid con dataset

Publicado por Arturo (7 intervenciones) el 31/08/2015 18:39:10
Buen día a todos:

Se que esta entrada ya esta repetida varias veces pero no puedo encontrar la solución. Les comparto lo que estoy haciendo

1.- Cargo los registros al data grid
1
DataGridView1.DataSource = BD.GetDataSet("Select ex.Extintor_id as Extintor, ex.Anos_Vida, age.nombre as Agente, mar.marca_nombre as Marca, Capacidad, cli.Nombre as Cliente, ex.Fecha_Fabricacion as Fabricacion From cat_cliente as cli inner join cat_extintor  as ex on cli.Cliente_id = ex.Cliente_id inner join cat_agente as age on age.Agente_id = ex.Agente_id inner join cat_marca as mar on mar.Marca_id = ex.Marca_id;").Tables(0)

2.- Realizo una busqueda de clientes a través de un textbox

1
2
3
4
Dim dt As DataTable = BD.GetDataSet("Select ex.Extintor_id as Extintor, ex.Anos_Vida, age.nombre as Agente, mar.marca_nombre as Marca, Capacidad, cli.Nombre as Cliente, ex.Fecha_Fabricacion as Fabricacion From cat_cliente as cli inner join cat_extintor  as ex on cli.Cliente_id = ex.Cliente_id inner join cat_agente as age on age.Agente_id = ex.Agente_id inner join cat_marca as mar on mar.Marca_id = ex.Marca_id WHERE cli.Nombre LIKE '%@0%'", TB_Busqueda_Exti.Text).Tables(0)
        If dt.Rows.Count > 0 Then
            DataGridView1.DataSource = BD.GetDataSet("Select ex.Extintor_id as Extintor, ex.Anos_Vida, age.nombre as Agente, mar.marca_nombre as Marca, Capacidad, cli.Nombre as Cliente, ex.Fecha_Fabricacion as Fabricacion From cat_cliente as cli inner join cat_extintor  as ex on cli.Cliente_id = ex.Cliente_id inner join cat_agente as age on age.Agente_id = ex.Agente_id inner join cat_marca as mar on mar.Marca_id = ex.Marca_id WHERE cli.Nombre LIKE '%@0%'", TB_Busqueda_Exti.Text).Tables(0).Rows(0)
        End If

Al iniciar a teclear no aparece ningún registro, como si no hubieran registros que concordaran con la búsqueda. Pero al realizar la misma consulta directamente en la BD si me muestra registros.
Mi método de getDataSet es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
Public Function GetDataSet(ByVal sqlQuery As String) As DataSet
        Dim Adapter As MySqlDataAdapter = Nothing
        Dim ds As New DataSet()
        Try
            Adapter = New MySqlDataAdapter(sqlQuery, connection)
            Adapter.Fill(ds, "data")
            Return ds
        Catch exc As Exception
            Throw exc
        End Try
    End Function


De antemano muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de giancarlo

Filtrar data grid con dataset

Publicado por giancarlo giangbd5@hotmail.com (280 intervenciones) el 31/08/2015 22:37:20
Buenas tardes, yo usaba el dataadapter asi.Hace tiempo que no uso, veamos el ejemplo:

1
2
3
4
5
6
7
8
dim con as new mysqlconnection("CADENa de conexion")
Dim Adapter As new MySqlDataAdapter("comando select",con)
Dim dt As New datatable
Try
Adapter.Fill(dt)
Catch exc As Exception
msgbox(ex. message)
End Try

para cargarlo a tu datagridview, datagrid:
datagridview1.datasource=dt

Ahora, veamos el punto principal del tema, si deseas hacerlo con una seleccion cada vez que vas escribiendo, en algun momento se hara lento, cuando tengas muchos datos, lo que necesitas es un dataview, siempre poner como origen de datos el dataview.

dim dv as dataview=dt.defaultview
datagridview1.datasource=dv 'aqui, ya no es datatable o dataset

Dentro del evento textchanged de tu textbox, pones lo siguiente:
dv.rowfilter="columna_a_filtrar like '%" & textbox1.text & "%'"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo

Filtrar data grid con dataset

Olvídate de los datasets, dale una mirada al ejemplo que subí a lo del datagrid de facturacion que pediste, alli tienes casi todo lo que necesitas, factura, delegados, filtrado en el datagridview.

Saludos cordiales
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar