Visual Basic.NET - Problema al buscar en un datagrid

   
Vista:

Problema al buscar en un datagrid

Publicado por Guillermo (26 intervenciones) el 21/06/2012 02:36:40
Hola Gente, como les va? me podran dar una manito?

Tengo una grilla llena con registros y quiero que a medida que voy escribiendo en una textbox se vaya posicionando en la fila que corresponde, la idea es que en la columna 2 tengo el apellido y buscaria por el apellido. Osea que si voy escribiendo el apellido se vaya parando donde tenga que hacerlo.

me pueden ayudar?
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

Problema al buscar en un datagrid

Publicado por Damian (824 intervenciones) el 22/06/2012 15:15:53
Hola, lo que tienes que hacer es trabajar con el evento Change (TextChanged) de tu textbox en donde se va a escribir y después ahí adentro es una consulta a tu Base de datos (un select con un like) donde se van a dar las coincidencias a medida que se vayan tecleando los caracteres correspondientes.
Yo me acuerdo que lo había realizado con un StoredProcedure. Por ejemplo en el evento Changed del textbox tenía una línea asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub txtBuscar_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBuscar.TextChanged
likeArt(txtBuscar.Text, DGArt)
End Sub
'Y luego esa función:
Sub likeArt(ByVal codigo As String, ByRef Grid As DataGridView)
        Dim longitud As Integer
 
        With Com
            .CommandText = "PA_likeArt1"
            .CommandTimeout = 0
            .CommandType = CommandType.StoredProcedure
            '.Parameters.Refresh()
            .Connection = MiConexion
            .Parameters.AddWithValue("@codigo", codigo & "%")
        End With
        Rs = Com.ExecuteReader()
    End Sub
A la función likeArt() le paso como parámetro el textbox y el DataGridView (DGArt)
Es una forma de hacerlo, pero como te dije al principio puedes hacer en el mismo evento del textbox la consulta SQL.
Saludos
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

Problema al buscar en un datagrid

Publicado por Guillermo (26 intervenciones) el 22/06/2012 16:20:14
Tengo algo parecido a lo que vos tenes ahi y me funciona bien mientras son pocos registros, cuando la cantidad de registros en la tabla crece, se empieza a complicar y se pone muy lento.
Tengo entendido que por ejemplo:
en DataGrid tiene una propiedad que se llama rowsfilter y ahí puedo buscar directamente en la grilla, en el contenido de la grilla y lo que estoy buscando es algo así pero para mi control DataGridView que no posee esta propiedad.
Tenes idea si existe algo asi?
Saludos
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

Problema al buscar en un datagrid

Publicado por David (46 intervenciones) el 22/06/2012 17:25:43
Hola Guillermo,
y si pruebas con el BindingSource algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
'Instanciar el componente BindingSource   
    Private BindingSource1 As BindingSource = New BindingSource
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim oComando As New SqlCommand("SP_TuProcedimiento", TuConexion)
        oComando.CommandType = CommandType.StoredProcedure
 
        'creamos un nuevo SQLDataAdapter y un DataTable
        Dim oAdapter As New SqlDataAdapter(oComando)
        Dim oTabla As New DataTable
        Try
            oAdapter.Fill(oTabla)
            BindingSource1.DataSource = oTabla
        Catch ex As SqlException
            MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, "Error")
        End Try
    End Sub
    Private Sub txtBuscar_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBuscar.TextChanged
        'Filtramos
        BindingSource1.Filter = "Nombre Like '%" & txtBuscar.Text & "%' or Apellido Like '%" & txtBuscar.Text & "%'"
        ' enlazar el datagridview al BindingSource   
        Me.DataGridView1.DataSource = BindingSource1.DataSource
    End Sub


espero te sirva saludos
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