Combobox y DisplayMember

08/03/2005 - 21:44 por Jocayol | Informe spam
Hola, mi duda es la siguiente, tengo un combobox que relleno con un dataview
y quiero que me muestre el Apellidos y el nombre del cliente separados por
una coma y esto lógicamente no está en una tabla de la base de datos. Se
puede hacer de alguna manera con DisplayMember. Bueno algo así:

MiCombo.ValueMember = "IdCliente"
MiCombo.DisplayMember = "Nombre" & ", " & "Apellidos"
MiCombo.DataSource = MiDataview


Muchas gracias.

Preguntas similare

Leer las respuestas

#1 CCALLOQUISPE PALOMINO
08/03/2005 - 22:03 | Informe spam
HOLA:

NO CREO QUE SE PUEDA, PERO HAZ ESO EN LA CONSULTA SQL
SELECT T_CLIENTE_APEPATE + ' ' + T_CLIENTE_APEMATE AS CLI
FROM TSL_CLIENTE

cbocliente.displaymember="cli"

"Jocayol" wrote:

Hola, mi duda es la siguiente, tengo un combobox que relleno con un dataview
y quiero que me muestre el Apellidos y el nombre del cliente separados por
una coma y esto lógicamente no está en una tabla de la base de datos. Se
puede hacer de alguna manera con DisplayMember. Bueno algo así:

MiCombo.ValueMember = "IdCliente"
MiCombo.DisplayMember = "Nombre" & ", " & "Apellidos"
MiCombo.DataSource = MiDataview


Muchas gracias.



Respuesta Responder a este mensaje
#2 Carlos Durán Urenda
09/03/2005 - 00:26 | Informe spam
alguien me paso este codigo y funciona perfecto, no recuerdo quien

Drawitem es un evento del ComboBox / ListBox. Lo encontrarás en la lista de
eventos.

Primero establece la propiedad DrawMode a OwnerDrawFixed.

Te dejo un ejemplo sobre como hacer tu control. Te puede valer así
adaptándolo a tu caso, aunque puedes crear tu propio control, más genérico,
basado en este código.

Para probarlo añade un ComboBox a tu formulario y este código:

' Crear y llenar la tabla
Dim tabla As New DataTable()
tabla.Columns.Add("Nombre", GetType(String))
tabla.Columns.Add("Dirección", GetType(String))
tabla.Rows.Add(New Object() {"juan", "Calle Juan"})
tabla.Rows.Add(New Object() {"pedro", "Calle pedro"})
tabla.Rows.Add(New Object() {"luis", "Calle luis"})
tabla.Rows.Add(New Object() {"jose", "Calle jose"})
ComboBox1.DataSource = tabla
ComboBox1.DisplayMember = "Nombre"

' Lo que importa
Private Sub ComboBox1_DrawItem(sender As Object, e As DrawItemEventArgs)
Handles ComboBox1.DrawItem
Dim tabla As DataTable = DirectCast(ComboBox1.DataSource, DataTable)
Dim fila As DataRow = tabla.Rows(e.Index)
e.DrawBackground()
e.Graphics.DrawString(fila("Nombre"), ComboBox1.Font, Brushes.Black, 0,
e.Bounds.Y)
e.Graphics.DrawString(fila("Dirección"), ComboBox1.Font, Brushes.Black,
100, e.Bounds.Y)
End Sub



Saludos
Carlos Duran

"Jocayol" escribió en el mensaje
news:%23aOKk%
Hola, mi duda es la siguiente, tengo un combobox que relleno con un
dataview y quiero que me muestre el Apellidos y el nombre del cliente
separados por una coma y esto lógicamente no está en una tabla de la base
de datos. Se puede hacer de alguna manera con DisplayMember. Bueno algo
así:

MiCombo.ValueMember = "IdCliente"
MiCombo.DisplayMember = "Nombre" & ", " & "Apellidos"
MiCombo.DataSource = MiDataview


Muchas gracias.

Respuesta Responder a este mensaje
#3 Jocayol
09/03/2005 - 01:16 | Informe spam
Es lo primero que pense, pero cuando añado una nueva fila al datatable, en
el combobox no me sale la columna conformada en el select de la fila
añadida, al no ser que vaya al servidor a volver a rellenar los datos del
datatable.
Gracias

"CCALLOQUISPE PALOMINO" escribió en el mensaje
news:
HOLA:

NO CREO QUE SE PUEDA, PERO HAZ ESO EN LA CONSULTA SQL
SELECT T_CLIENTE_APEPATE + ' ' + T_CLIENTE_APEMATE AS CLI
FROM TSL_CLIENTE

cbocliente.displaymember="cli"

"Jocayol" wrote:

Hola, mi duda es la siguiente, tengo un combobox que relleno con un
dataview
y quiero que me muestre el Apellidos y el nombre del cliente separados
por
una coma y esto lógicamente no está en una tabla de la base de datos. Se
puede hacer de alguna manera con DisplayMember. Bueno algo así:

MiCombo.ValueMember = "IdCliente"
MiCombo.DisplayMember = "Nombre" & ", " & "Apellidos"
MiCombo.DataSource = MiDataview


Muchas gracias.



Respuesta Responder a este mensaje
#4 Jocayol
09/03/2005 - 02:11 | Informe spam
Simplemente perfecto, yo lo hago con un dataview y me ha parecido que se
podia calcular el tamaño de la primera columna, para ajustar la segunda un
poco mas y te devuelvo el codigo un poco cambiado.
Muchas gracias

Dim s As SizeF
Dim dview As DataView = DirectCast(Me.Combo.DataSource, DataView)
Dim fila As DataRowView = dview(e.Index)
e.DrawBackground()
e.Graphics.DrawString(CStr(fila("Apellidos")) & ",", Me.Combo.Font,
Brushes.Black, 0, e.Bounds.Y)
s = e.Graphics.MeasureString(CStr(fila("Apellidos")), Me.Combo.Font, 400)
e.Graphics.DrawString(CStr(fila("Nombre")), Combo.Font, Brushes.Black,
s.Width, e.Bounds.Y)








"Carlos Durán Urenda" escribió en el mensaje
news:
alguien me paso este codigo y funciona perfecto, no recuerdo quien

Drawitem es un evento del ComboBox / ListBox. Lo encontrarás en la lista
de
eventos.

Primero establece la propiedad DrawMode a OwnerDrawFixed.

Te dejo un ejemplo sobre como hacer tu control. Te puede valer así
adaptándolo a tu caso, aunque puedes crear tu propio control, más
genérico,
basado en este código.

Para probarlo añade un ComboBox a tu formulario y este código:

' Crear y llenar la tabla
Dim tabla As New DataTable()
tabla.Columns.Add("Nombre", GetType(String))
tabla.Columns.Add("Dirección", GetType(String))
tabla.Rows.Add(New Object() {"juan", "Calle Juan"})
tabla.Rows.Add(New Object() {"pedro", "Calle pedro"})
tabla.Rows.Add(New Object() {"luis", "Calle luis"})
tabla.Rows.Add(New Object() {"jose", "Calle jose"})
ComboBox1.DataSource = tabla
ComboBox1.DisplayMember = "Nombre"

' Lo que importa
Private Sub ComboBox1_DrawItem(sender As Object, e As DrawItemEventArgs)
Handles ComboBox1.DrawItem
Dim tabla As DataTable = DirectCast(ComboBox1.DataSource, DataTable)
Dim fila As DataRow = tabla.Rows(e.Index)
e.DrawBackground()
e.Graphics.DrawString(fila("Nombre"), ComboBox1.Font, Brushes.Black, 0,
e.Bounds.Y)
e.Graphics.DrawString(fila("Dirección"), ComboBox1.Font, Brushes.Black,
100, e.Bounds.Y)
End Sub



Saludos
Carlos Duran

"Jocayol" escribió en el mensaje
news:%23aOKk%
Hola, mi duda es la siguiente, tengo un combobox que relleno con un
dataview y quiero que me muestre el Apellidos y el nombre del cliente
separados por una coma y esto lógicamente no está en una tabla de la base
de datos. Se puede hacer de alguna manera con DisplayMember. Bueno algo
así:

MiCombo.ValueMember = "IdCliente"
MiCombo.DisplayMember = "Nombre" & ", " & "Apellidos"
MiCombo.DataSource = MiDataview


Muchas gracias.





Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP VB]
09/03/2005 - 04:09 | Informe spam
Puedes agregar un campo calculado al datatable en el codigo. Por ejemplo:

tabla.Columns.Add("NombreCompleto", GetType(String), "Apellidos + Nombre")

Y usar ese campo en el combo.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida