Combobox y dataset

02/06/2005 - 18:10 por Víctor | Informe spam
Hola.

Necesito mostrar dos campos de una dataset en el combobox. ¿Puedo darle a la
propiedad displaymember del combo una valor para que me muestre dos campos?

¿Como podría hacer esto?.

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Tristan
02/06/2005 - 23:31 | Informe spam
Como siempre, tienes varias soluciones.

1) La que te ha dicho Guillermo. Utilizar un componente de terceros que ya
tenga esa posibilidad incorporada.

2) Añadir a tu tabla una columna calculada, que incluya los dos campos, o
sea simplemente:

tuDataTable.Columns.Add("ApeNom", GetType(String), "apellidos + ', ' +
nombre");

Y enlazar esta columna. Una vez utilizada puedes eliminar la columna.

3) Pintar tu mismo los elementos del Combo. Establece la propiedad OwnerDraw
a OwnerDrawFixed, y en el evento DrawItem escribes algo así:

DataRow fila = (tuComboBox.DataSource as DataTable).Rows(e.Index);
e.DrawBackground();
Dim pincel As SolidBrush = New SolidBrush(e.ForeColor);
e.Graphics.DrawString(fila("apellidos") + ", " + fila("nombre"),
tuComboBox.Font, pincel, e.Bounds);
pincel.Dispose();

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 Tristan
03/06/2005 - 00:07 | Informe spam
Uysss, me parece que ya me empiezo a hacer un lio entre vb.net y C# :-)) Se
nota que me toca pasar más tiempo con vb.net últimamente.

El ejemplo 2) debe ser:

tuDataTable.Columns.Add("ApeNom", typeof(string), "apellidos + ', ' +
nombre");

Y el 3) quedaría así:

DataRow fila = (tuComboBox.DataSource as DataTable).Rows[e.Index];
e.DrawBackground();
SolidBrush pincel = new SolidBrush(e.ForeColor);
e.Graphics.DrawString(fila["apellidos"] + ", " + fila["nombre"],
tuComboBox.Font, pincel, e.Bounds);
pincel.Dispose();

Espero no haber dejado algún otro error.


Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#3 Víctor
03/06/2005 - 11:31 | Informe spam
Muchas gracias. He optado por la opción de añadir la columna calculada al
DataTable, y la solución es rápida y limpia.

De nuevo gracias.

"Tristan" escribió:

Uysss, me parece que ya me empiezo a hacer un lio entre vb.net y C# :-)) Se
nota que me toca pasar más tiempo con vb.net últimamente.

El ejemplo 2) debe ser:

tuDataTable.Columns.Add("ApeNom", typeof(string), "apellidos + ', ' +
nombre");

Y el 3) quedaría así:

DataRow fila = (tuComboBox.DataSource as DataTable).Rows[e.Index];
e.DrawBackground();
SolidBrush pincel = new SolidBrush(e.ForeColor);
e.Graphics.DrawString(fila["apellidos"] + ", " + fila["nombre"],
tuComboBox.Font, pincel, e.Bounds);
pincel.Dispose();

Espero no haber dejado algún otro error.


Juan Carlos Badiola
MVP - C#



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida