AutoComplete TextBox con DataTable

Nota Vista 24.162 Veces

Bueno esta vez les traigo la manera de implementar el famoso automplete en los TextBox.

Esto sirve para facilitar el uso de nuestras aplicaciones a los usuarios y a la vez darle más vistosidad.

Para este ejemplo cree una pequeña base de datos llamada world, la base de datos tiene tres tablas llamadas country, city y countrylanguaje, que la pueden bajar de Aca.

El diseño de la aplicación también será algo sencillo solo tendrá un TextBox y un Botón

 

Ahora lo que haremos es agregar un nuevo modulo a nuestro proyecto en mi caso le llamare AutoComple.vb y lo primero que haremos es agregar los siguientes espacios de nombres que necesitaremos.

 Imports MySql.Data
Imports MySql.Data.MySqlClient

Ahora lo que aremos es hacer el modulo publico y agregaremos 3 métodos que usaremos.

Public Module AutoComplete
'Cadena conexion
Public DBCon As New MySqlConnection(StringConexion("localhost", "root", "informatica", "test"))

'Metodo para cargar los datos de la BD
Public Function Datos() As DataTable
Dim dt As New DataTable()

DBCon.Open()

Dim Consulta As String = "SELECT * FROM COUNTRY"
'Consulta a la tabla Paises
Dim comando As New MySqlCommand(Consulta, DBCon)

Dim adap As New MySqlDataAdapter(comando)

adap.Fill(dt)
Return dt
End Function

Private Function StringConexion(ByVal ctrServidor As String, ByVal ctrUsuario As String, ByVal ctrPassword As String, ByVal ctrNombreBD As String) As String
Dim cbsMySQL As New MySqlConnectionStringBuilder

cbsMySQL.Server = ctrServidor
cbsMySQL.UserID = ctrUsuario
cbsMySQL.Password = ctrPassword
cbsMySQL.Database = ctrNombreBD
cbsMySQL.PersistSecurityInfo = True
cbsMySQL.Port = 3306

StringConexion = cbsMySQL.ConnectionString
End Function

'Metodo para cargar la coleccion de datos para el AutoComplete
Public Function Autocompletar() As AutoCompleteStringCollection
Dim dt As DataTable = Datos()

Dim coleccion As New AutoCompleteStringCollection()
'Recorrer y cargar los items para el Autocompletado
For Each row As DataRow In dt.Rows
coleccion.Add(Convert.ToString(row("Name")))
Next

Return coleccion
End Function
End Module

El primer método llamado Datos se usa para cargar los datos de nuestra base de datos, el método StringConexion es el que crea el String para la conexion y el método Autocomplete es el que servirá para cargar los datos del autocomplete, los 3 métodos son sencillos de comprender y lleva comentada las partes mas importantes.

Ahora lo que aremos es crear el evento load de nuestro formulario y tendrá el siguiente código.

 'Cargar los datos para el autocomplete del textbox
TextBox1.AutoCompleteCustomSource = Autocompletar()
TextBox1.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource

Para el autocomplete del TextBox, se hace con el uso de 3 propiedades, AutoCompleteCustomSource que es la propiedad que obtiene la colección de datos que servirán para el autocomplete, AutoCompleteMode indica el modo de autocomplete y AutoCompleteSource indica de dónde se sacarán las sugerencias de rellenado automático.

 

Puedes bajar el ejemplo de Aca. Requisitos (Microsoft Visual Studio 2010 y MySQL)

Rolyn Gamez Rolyn Gamez  (9 Posts)

Gerente Propietario de DataTech Solutions S. de R.L. con los siguientes servicios: * Venta y Reparación de Computadoras de todo tipo (portátiles, escritorio, servidores). * Venta de Impresoras de todo tipo (Laser, Inyeccion de Tinta, Matriciales, Multifuncionales). * Venta de Copiadoras segun el presupuesto del cliente (optando a adquirirla a plazos directamente con el proveedor). * Trabajos Secretariales * Diseño Gráfico * Creación y Mantenimiento de Redes Informáticas * Desarrollo de Software a su medida. * Implementación de Software Empresarial, Administrativo, Contable, etc.



19 Responses

  1. simon camacho dice:

    Gracias amigo excelente aporte se pueden hacer pregunta por aqui?

  2. oscar marquez montoya dice:

    alguien save cual es el codigo para hacer un cuadro de calificaciones de minimo 25 alumnos un programa que de la calificacion por alumno, por unidad de cada materia,promedio final de cada materia por alumno,promedio final del alumno,promedio grupal final y promedio final por unidad

  3. Ivann Olvera dice:

    Estoy realizando un software en el cual deseo incluir esa fución, pero este ejemplo está en MySql y mi base de datos está en SQL Server 2008, es el mismo código o que? o simplemente cambio la ubicación de la base de datos?

  4. Jorge dice:

    Saludos. Excelente ejemplo. La pregunta sería si AutoCompleteStringCollection puede aceptar 2 campos (Id, Descripcion) y al seleccionar la descripcion pueda obtener el Id respectivo.

  5. Martin Diaz dice:

    Interesante Codigo…! Pero Como Haria No Solo Para Que Busque Con La Letra De Inicio Sino…! Con Alguna Letra Que Contenga En El Interior
    un Like %Letas%

    algo asi, serio mejor algo asi…!

  6. yafreth crnts dice:

    Excelente tuto man, justo lo que buscaba, nada mas una dudota, al seleccionar el texto(con un clic) se pasara esa seleccion al textbox?

  7. David dice:

    Buen aporte man.
    Gracias.
    yafreth crnts si pasa al textbox si le haces un click ya lo probe, y tambien se puede usar en un combobox, alli yo lo estoy usando, saludos

  8. octavio dice:

    excelente muchas gracias

  9. Dhery dice:

    Alguien sabe q evento se ejecuta cuando con el mouse elijo una de las sugerencias de la lista que se desplega???

  10. saulo dice:

    y para buscar los datos en SQL server cual seria el codigo

  11. joharys dice:

    Exelente lo adapte a mysql y me sirvio gracias por tu colaboracion.

  12. angel dice:

    oOla porfa si me podrias ayudar, pasa que yo lo estoy haciendo con mysql-visual 10, pero stoy usando un datagridview, como le ago para que al momento de escribir en el textbox vaya autoacompletando la busqueda del campo agregado en la base de datos, mayormente ocupo el appserver, te agradeceria muchisimo

  13. Giovanni dice:

    Me gusto tu publicacion, fue muy instructivo, y aprovechando tu gentil atención, deseo por favor, saber como puedo empaquetar una aplicacion de vb.net que utiliza una base de datos sqlserver 2008, en el setup factory o en el inno setup compiler, e instalarlo en una maquina que no tenga instalado el sqlserver 2008 y que funcione de manera normal. Te agradezco de antemano. Atte. Giovanni Guerrero (Bolivia-La Paz)

  14. Handrys Kavith dice:

    Que Versión de MySQL se Necesita?

  15. Nicolas Lazo Febres dice:

    buen trabajo tu si sacas de apuros

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© VB-MUNDO – Programacion Visual
CyberChimps