Buscar un texto en una columna y seleccionar los coincidentes en un DGV

<Pregunta>
Que tal .. igual no sé si este comentario sea para es hilo, pero tengo un problema .. tengo un datagridview pero quiero agregar un textbox fuera del datagrid, para cuando empiece a escribir vaya buscando en el datagrid y que se vaya seleccionando, sé que para ese procedimiento se juega un poco con el datatable pero aún estoy perdido ... alguién tiene una sugerencia ..

Mil gracias

<Respuesta>
... Se me ocurre algo similar a esto.

    Private Articulo As New DataTable("Articulos")

    Private MIDGV As New DataGridView

    Private MITXT As New TextBox

 

    Private Sub Form1_Load() Handles MyBase.Load

        '

        ' Simular tabla Articulos

        '

        Articulo.Columns.Add("Codigo")

        Articulo.Columns.Add("Descripcion")

        Articulo.Columns.Add("Precio")

        Articulo.Rows.Add("001", "Resistencia 100ohms", "0,15")

        Articulo.Rows.Add("002", "Transistor 2n2234", "1,00")

        Articulo.Rows.Add("003", "Microprocesador Z80", "5,40")

        Articulo.Rows.Add("004", "UART 16C450", "3,45")

        Articulo.Rows.Add("005", "Resistencia 200ohms", "0,12")

        Articulo.Rows.Add("006", "Transistor 2n2222", "1,22")

        '

        ' marco

        Dim marcoDGV = New FlowLayoutPanel

        marcoDGV.BorderStyle = BorderStyle.Fixed3D

        marcoDGV.Width = Me.Width

        marcoDGV.Height = Me.Height

        ' Añadir el marco con el DataGridView y textBox

        marcoDGV.Controls.AddRange(New Control() {MIDGV, MITXT})

        Me.Controls.Add(marcoDGV)

        ' Seleccionar el textbox

        MITXT.Select()

        ' al cambiar el texto

        AddHandler MITXT.TextChanged, AddressOf VerSeleccion

    End Sub

 

    ' LINQ (Con VB9 'Visual Studio 2008')

    ' Mostrar la seleccion de los registros

    ' que contienen la seleccion del texto

    ' introducido en el textBox

    Private Sub VerSeleccion()

        MIDGV.DataSource = (From S In Articulo Where S.Item("Descripcion").ToString.Contains(MITXT.Text) _

                                 Select Codigo = S.Item("Codigo"), _

                                        Descripcion = S.Item("Descripcion") _

                            ).ToList

    End Sub

Saludos,
Pep Lluis,

Comments

# re: Buscar un texto en una columna y seleccionar los coincidentes en un DGV

Friday, April 24, 2009 5:14 PM by Lluis

Pep, este fragmento de código me da error en "Articulo" de la sentencia de LINQ. ¿Podrías revisar que está mal?

Un saludo

# re: Buscar un texto en una columna y seleccionar los coincidentes en un DGV

Saturday, April 25, 2009 2:53 AM by peplluis

Hola Luis,

El codigo esta probado! y a mi me funciona Puede que tengas de eliminar el doble espacio entre linias efecto de cuando haces copiar/pegar desde el blog.

... quizas te falta hacer referencia al espacio de nombres de linq?

En todo caso especificame el error.

Saludos,

Pep Lluis

# re: Buscar un texto en una columna y seleccionar los coincidentes en un DGV

Tuesday, November 02, 2010 12:35 PM by Luis

Pues este es el error que me lanza

"No se puede consultar una expresión de tipo 'System.Data.DataTable'. Compruebe que no falta ninguna referencia de ensamblado ni ninguna importación de espacio de nombres para el proveedor LINQ."

Tengo referenciado los siguientes espacios de nombres:

Imports System.Data.Linq

Imports System.Data

# re: Buscar un texto en una columna y seleccionar los coincidentes en un DGV

Tuesday, November 09, 2010 12:08 PM by peplluis

Hola Luis,

Acabo de probar el ejemplo ustilizando Visual Studio 2010 y no hay problema. Supongo que en tu caso has modificado el origen de datos, entonces deberia ver el codigo para entender que esta pasando.

Si te parece contacta conmigo. Opcioni [Contact]

Pep Lluis,

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: