Problema con SelectedValue y ValueMember

30/03/2006 - 13:13 por Rubén Vigón | Informe spam
Estoy probando la característica de VB.NET 2003 de agregar objetos a un ComboBox, mostrar una determinada propiedad de éstos mediante «DisplayMember» y acceder a otra mediante «ValueMember». He creado una clase CEmpleado con dos propiedades públicas ReadOnly llamadas "NIF" y "NombreCompleto" y he agregado un par de objetos a un ComboBox:

Private Sub Form1_Load(...) Handles MyBase.Load
With cboEmpleado.Items
.Add(New CEmpleado("12345678A", "Martínez García, Luis"))
.Add(New CEmpleado("23456789B", "González Puente, Pedro"))
End With
End Sub

En tiempo de ejecución, veo los dos empleados cargados correctamente en el ComboBox; selecciono el primero de ellos con el ratón y quiero mostrar su NIF, seleccionar el segundo empleado y mostrar el NIF de éste, para lo que he colocado un botón que hace:

Private Sub Button1_Click(...) Handles Button1.Click
MessageBox.Show(cboEmpleado.SelectedValue)
cboEmpleado.SelectedValue = "23456789B"
MessageBox.Show(cboEmpleado.SelectedValue)
End Sub

En ambos casos, el MessageBox sale vacío :-(
El ComboBox «cboEmpleado» tiene DisplayMember = "NombreCompleto" y ValueMember = "NIF". Según la ayuda, la propiedad SelectedValue [...] Gets or sets the value of the member property specified by the ValueMember property

¿Qué estoy haciendo mal?

Un millón de gracias de antemano

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org

Preguntas similare

Leer las respuestas

#1 Luis Miguel Blanco
30/03/2006 - 14:53 | Informe spam
Hola Rubén

Prueba a poner los objetos que quieres cargar en el combo dentro de una
colección, por ejemplo un ArrayList. A continuación, pasas dicho ArrayList al
DataSource del combo, y estableces sus propiedades DisplayMember y
ValueMember. Con esto creo que ya te funcionaría.

Te adjunto un bloque de código de ejemplo para que lo pruebes.

'///////////////////////////
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim aEmpleados As ArrayList = New ArrayList
aEmpleados.Add(New CEmpleado("12345678A", "Martínez García, Luis"))
aEmpleados.Add(New CEmpleado("23456789B", "González Puente, Pedro"))

Me.cboEmpleado.DataSource = aEmpleados
Me.cboEmpleado.DisplayMember = "Nombre"
Me.cboEmpleado.ValueMember = "Codigo"
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
MessageBox.Show(Me.cboEmpleado.SelectedValue)
End Sub
'///////////////////////////

Espero que te sea de ayuda

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Rubén Vigón" wrote:

Estoy probando la característica de VB.NET 2003 de agregar objetos a un ComboBox, mostrar una determinada propiedad de éstos mediante «DisplayMember» y acceder a otra mediante «ValueMember». He creado una clase CEmpleado con dos propiedades públicas ReadOnly llamadas "NIF" y "NombreCompleto" y he agregado un par de objetos a un ComboBox:

Private Sub Form1_Load(...) Handles MyBase.Load
With cboEmpleado.Items
.Add(New CEmpleado("12345678A", "Martínez García, Luis"))
.Add(New CEmpleado("23456789B", "González Puente, Pedro"))
End With
End Sub

En tiempo de ejecución, veo los dos empleados cargados correctamente en el ComboBox; selecciono el primero de ellos con el ratón y quiero mostrar su NIF, seleccionar el segundo empleado y mostrar el NIF de éste, para lo que he colocado un botón que hace:

Private Sub Button1_Click(...) Handles Button1.Click
MessageBox.Show(cboEmpleado.SelectedValue)
cboEmpleado.SelectedValue = "23456789B"
MessageBox.Show(cboEmpleado.SelectedValue)
End Sub

En ambos casos, el MessageBox sale vacío :-(
El ComboBox «cboEmpleado» tiene DisplayMember = "NombreCompleto" y ValueMember = "NIF". Según la ayuda, la propiedad SelectedValue [...] Gets or sets the value of the member property specified by the ValueMember property

¿Qué estoy haciendo mal?

Un millón de gracias de antemano

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org

Respuesta Responder a este mensaje
#2 Rubén Vigón
30/03/2006 - 15:50 | Informe spam
¡Perfecto! Ahora sí

Muchísimas gracias, Luis Miguel

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org
Respuesta Responder a este mensaje
#3 Lluís Franco
30/03/2006 - 17:52 | Informe spam
:-)
Hola,

Es curioso... a mi me sucedió lo mismo con objetos contenidos en un
diccionario genérico de <Cliente> (VS2005).
Al asociarlo a un combo o incluso a un report como origen de datos, no
presentaba ningún error pero no mostraba nada.
Tuve que pasar los objetos a un ArrayList y entonces si funcionó ¿?

Lo solucioné, pero me quedé con cara de poquer...
¿Alguien tiene una explicación para esto?

Saludos,

Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
Web: http://www.uyssoft.com
Blog: http://msmvps.com/lfranco
(Guía de netiquette del foro)
http://www.uyssoft.com/MSNews.aspx?sm
FIMARGE, S.A.
Principat d'Andorra

Tel.: +376 805 100
Fax: +376 824 500
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profileaa1615-1a2f-4202-bc3f-aec297d967d2
This posting is provided "AS IS" with no warranties, and confers no rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho
Respuesta Responder a este mensaje
#4 Lord Voldemort
30/03/2006 - 19:31 | Informe spam
creo que se tenia que usar selectedindex y no selectedvalue..

haber




"Lluís Franco" wrote in message
news:

:-)
Hola,

Es curioso... a mi me sucedió lo mismo con objetos contenidos en un
diccionario genérico de <Cliente> (VS2005).
Al asociarlo a un combo o incluso a un report como origen de datos, no
presentaba ningún error pero no mostraba nada.
Tuve que pasar los objetos a un ArrayList y entonces si funcionó ¿?

Lo solucioné, pero me quedé con cara de poquer...
¿Alguien tiene una explicación para esto?

Saludos,

Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
Web: http://www.uyssoft.com
Blog: http://msmvps.com/lfranco
(Guía de netiquette del foro)
http://www.uyssoft.com/MSNews.aspx?sm
FIMARGE, S.A.
Principat d'Andorra

Tel.: +376 805 100
Fax: +376 824 500
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profileaa1615-1a2f-4202-bc3f-aec297d967d2
This posting is provided "AS IS" with no warranties, and confers no
rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho



Respuesta Responder a este mensaje
#5 Luis Miguel Blanco
30/03/2006 - 19:42 | Informe spam
No hay de qué, ha sido un placer haberte ayudado 8-)
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Rubén Vigón" wrote:

¡Perfecto! Ahora sí

Muchísimas gracias, Luis Miguel

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida