Buscale aqui!

El mio mismo

Mi experimento por tratar de ligar dos palabras para formar una frase coherente frase formar

Nov
10

Autocompletado en TextBox, C#.

Posted by Mario

También hago como que programo :P. Esto fue hecho en Visual Studio 2005.

Recientemente necesitabamos una funcion de autocompletado en cajas de texto que tomara como fuente una consulta, lo que se hizo fue lo siguiente:

public void Autocompletado(string Tabla, string Columna, ref TextBox Text, AutoCompleteMode Estilo)
{
Obj_Conexion.ConnectionString = Cadena_Conexion;
My_Command.Connection = Obj_Conexion;
My_Command.CommandType = CommandType.StoredProcedure;
My_Command.CommandText = “SP_Autocompletado”;
My_Command.Parameters.AddWithValue(”@Tabla”, Tabla);
My_Command.Parameters.AddWithValue(”@Columna”, Columna);

Obj_Conexion.Open();
My_Reader = My_Command.ExecuteReader(CommandBehavior.CloseConnection);
My_Command.Parameters.Clear();
AutoCompleteStringCollection Fuente_Auto = new AutoCompleteStringCollection();

int x = 0;
while (My_Reader.Read())
{
Fuente_Auto.Add(My_Reader.GetString(0));
}

Obj_Conexion.Close();

Text.AutoCompleteMode = Estilo;
Text.AutoCompleteSource = AutoCompleteSource.CustomSource;
Text.AutoCompleteCustomSource = Fuente_Auto;
Text.Refresh();
}

La funcion se hizo parte de una clase “Funciones_Basicas” por llamarla de alguna manera. Recibe como parametros:

- La tabla de la cual se seleccionaran los registros.

- La columna que se incluira en la consulta.

- El TextBox el cual se le modificarán sus porpiedades para admitir el autocompletado.

- Y, el estilo de autocompletado; el cual esta contenido en la enumeración AutoCompleteMode. Este estilo definira como se completan las palabras en el TextBox, puede ser:

- Append, el cual anexa las letras a la palabra que se va escribiendo.

- Suggest, que muestra sugerencias enlistadas debajo del TextBox.

- Ambas!

De acuerdo a la necesidad, se puede adecuar la consulta a la base de datos. En este caso use un Stored Procedure dinámico el cual recibe como parametro el nombre de la tabla (que no es lo mismo que un parametro tipo “tabla”-gracias sasu-).

My_Command.CommandText = “SP_Autocompletado”;

Para poder crear estos objetos, utilize los espacios de nombres

using System.Data.Sql;
using System.Data.SqlClient;

En fin, una vez seleccionado el campo deseado de la tabla, se recorre todo el conjunto de registros y se inserta en un arreglo, cabe mencionar que este arreglo -que en realidad es una coleccion de strings- debe ser mappeado de un objeto AutoCompleteStringCollection. Este fue mi dolor de cabeza! pero como gracias a San Judas y todos esos reggaetoneros que van cada 28 a San hipolito, todo en C# son objetos, bastó ver que objeto recibia la propiedad AutoCompleteCustomSource.

Text.AutoCompleteCustomSource = Fuente_Auto;

Antes de esto, pero no menos importante, es necesario definir la fuente del autocompletado, en este caso es una fuente propia, una coleccion de cadenas -que vino de nuestra BD-.
Text.AutoCompleteSource = AutoCompleteSource.CustomSource;

Fuente_Auto, vendria siendo nuestro “CustomSource”

Text.AutoCompleteCustomSource = Fuente_Auto;

Para los ComboBox -ya cargados- esto no es necesario, solo se selecciona AutoCompleteSource.ListItems y los mismos elementos de la lista seran la fuente del autocompletado-as usual-.

Eso ha sido todo por hoy, sigan en sintonia para mas funciones piñatas, espero, de corazon, que a alguien le sirva.

Gracias… totales.

Add A Comment