Cómo: Crear una tabla de búsqueda para un control ComboBox, ListBox o CheckedListBox de Windows Forms
Actualización: noviembre 2007
A veces resulta útil mostrar en un formulario Windows Forms y con un formato sencillo para el usuario datos que están almacenados en un formato más significativo para el programa. Por ejemplo, un formulario de pedido de comida puede mostrar los elementos del menú por su nombre en un cuadro de lista. Sin embargo, la tabla de datos que registra el pedido contendrá los números de identificador únicos que representan la comida. Las tablas siguientes muestran un ejemplo de cómo almacenar y mostrar datos de un formulario de pedido sobre comida.
OrderDetailsTable
OrderID |
ItemID |
Quantity |
---|---|---|
4085 |
12 |
1 |
4086 |
13 |
3 |
ItemTable
ID |
Name |
---|---|
12 |
Patatas |
13 |
Pollo |
En este escenario, una tabla, OrderDetailsTable, almacena la información real que interesa mostrar y guardar. Pero para ahorrar espacio, lo hace en un modo bastante críptico. La otra tabla, ItemTable, contiene sólo información relativa al aspecto sobre qué número de identificador equivale a qué nombre de comida, y nada sobre los pedidos de comida.
La tabla ItemTable está conectada con el control ComboBox, ListBox o CheckedListBox mediante tres propiedades. La propiedad DataSource contiene el nombre de esta tabla. La propiedad DisplayMember contiene la columna de datos de esa tabla que desea mostrar en el control (el nombre de la comida). La propiedad ValueMember contiene la columna de datos de esa tabla que incluye la información almacenada (el número de identificador).
La tabla OrderDetailsTable está conectada al control mediante su colección de enlaces, a la que se obtiene acceso gracias a la propiedad DataBindings. Cuando se agrega un objeto de enlace a la colección, se conecta una propiedad del control con un miembro de datos determinado (la columna de los números de identificador) de un origen de datos (la tabla OrderDetailsTable). Cuando se realiza una selección en el control, esta tabla es donde se guarda la entrada ejecutada en el formulario.
Para crear una tabla de búsqueda
Agregue un control ComboBox, ListBox o CheckedListBox al formulario.
Conéctese con el origen de datos.
Establezca una relación de datos entre las dos tablas.
Establezca las siguientes propiedades, que pueden establecerse en código o en el diseñador.
Propiedad
Valor
La tabla que contiene información sobre qué número de identificador equivale a qué elemento. En el escenario anterior, esta tabla es ItemTable.
La columna de la tabla de origen de datos que desea mostrar en el control. En el escenario anterior, es "Name" (para establecerla en el código, use comillas).
La columna de la tabla del origen de datos que contiene la información almacenada. En el escenario anterior, es "ID" (para establecerla en el código, use comillas).
En un procedimiento, llame al método Add de la clase ControlBindingsCollection para enlazar la propiedad SelectedValue del control con la tabla que registre la entrada realizada en el formulario. También puede hacer esto en el Diseñador en lugar de en código, teniendo acceso a la propiedad DataBindings del control en la ventana Propiedades. En el escenario anterior, ésta es OrderDetailsTable y la columna es "ItemID".
ListBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID")
listBox1.DataBindings.Add("SelectedValue", OrderDetailsTable, "ItemID");
listBox1.get_DataBindings().Add("SelectedValue", OrderDetailsTable, "ItemID");
Vea también
Conceptos
Enlace de datos y formularios Windows Forms
Referencia
Información general sobre ListBox (Control, formularios Windows Forms)
Información general sobre el control ComboBox (formularios Windows Forms)
Información general sobre el control CheckedListBox (formularios Windows Forms)
Otros recursos
Controles de formularios Windows Forms usados para mostrar opciones