Combo Box

06/09/2004 - 16:11 por Rodrigo Pizarro Quezada | Informe spam
Amigos del Foro,

Tengo un problema con el Combox Box, No tiene la propiedad item data de mi
querido visual 6.0, y tengo la necesidad de llenarlo con los datos de una
tabla (Codigo, Descripcion), se que se puede hacer con las propiedades :
Combo.BeginUpdate
ComboBox1.DataSource = un arreglo o un DTS
ComboBox1.DisplayMember = Descripcion
ComboBox1.ValueMember = Codigo
Combo.EndUpdate

Los datos los rescato de un proceso almacenado y los retorno en un
SqlDataReader.
y en la propiedad ComboBox1.DataSource no me deja asignarle mi
SqlDataReader.

ahora la pregunta es otra es posible llanar el combo box de forma manual
(sin pasarle un datasource) y que quede almacenado Codigo, Descripcion?


Salu2

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
06/09/2004 - 17:49 | Informe spam
Los datos los rescato de un proceso almacenado y los retorno en un
SqlDataReader.
y en la propiedad ComboBox1.DataSource no me deja asignarle mi
SqlDataReader.



El enlace a datos de winforms acepta solo los objetos que implementen la
interface IList, la cual no es implementada por DataReader. Lo mas simple
seria que cargaras un DataTable en lugar de usar un DataReader.

ahora la pregunta es otra es posible llanar el combo box de forma
manual (sin pasarle un datasource) y que quede almacenado Codigo,
Descripcion?



Si se puede. A diferencia de VB6 los items del combobox y listbox pueden ser
de cualquier tipo de objeto, no solo Strings. Lo que debes hacer es crear
una clase o estructura que mantenga los datos que necesitas y agregar
instancias de esa clase/estructura al combobox. Busca en los mensajes
pasados que se han puesto varios ejemplos.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 J. Carlos Herrero
06/09/2004 - 22:47 | Informe spam
Hola:

Para cargar de forma manual:

ComboBox2.Items.Add(New AddItem("ALAVA", 1))
ComboBox2.Items.Add(New AddItem("GUIPUZCOA", 20))
ComboBox2.Items.Add(New AddItem("VIZCAYA", 48))
Su valor se ve asi:

Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
Dim item As AddItem = DirectCast(ComboBox2.SelectedItem, AddItem)
MsgBox(item.Clave.ToString())
End Sub

Para cargar desde un dataReader:

lsQuery = "Select ID_PERSONA, NOMBRE from PERSONA order by NOMBRE"
'crear el comando
Dim loComandoPersona As New OleDbCommand(lsQuery, moConexion)
'crear el Datareader
Dim loDRPersona As OleDbDataReader
moConexion.Open()
loDRPersona = loComandoPersona.ExecuteReader 'obtener el Datareader
'leer la filas del Datareader
While loDRPersona.Read()
Me.cboPersona.Items.Add(New AddItem(loDRPersona("NOMBRE"), loDRPersona("ID_PERSONA")))
End While
loDRPersona.Close()
Me.moConexion.Close()

Su valor es:
DirectCast(Me.cboPersona.SelectedItem, AddItem).Clave.ToString()

En ambos casos tienes que utilizar la siguiente clase:

Public Class AddItem
Private moClave As Object
Private msNombre As String

Public Sub New(ByVal Nombre As String, ByVal Clave As Object)
msNombre = Nombre
moClave = Clave
End Sub

Public Property Clave() As Object
Get
Return moClave
End Get
Set(ByVal Value As Object)
moClave = Value
End Set
End Property

Public Property Nombre() As String
Get
Return msNombre
End Get
Set(ByVal Value As String)
msNombre = Value
End Set
End Property

Public Overrides Function ToString() As String
Return msNombre
End Function
End Class

Espero que te sirva
Un saludo:
Carlos



Rodrigo Pizarro Quezada wrote:
Amigos del Foro,

Tengo un problema con el Combox Box, No tiene la propiedad item data
de mi querido visual 6.0, y tengo la necesidad de llenarlo con los
datos de una tabla (Codigo, Descripcion), se que se puede hacer con
las propiedades : Combo.BeginUpdate
ComboBox1.DataSource = un arreglo o un DTS
ComboBox1.DisplayMember = Descripcion
ComboBox1.ValueMember = Codigo
Combo.EndUpdate

Los datos los rescato de un proceso almacenado y los retorno en un
SqlDataReader.
y en la propiedad ComboBox1.DataSource no me deja asignarle mi
SqlDataReader.

ahora la pregunta es otra es posible llanar el combo box de forma
manual (sin pasarle un datasource) y que quede almacenado Codigo,
Descripcion?


Salu2
Respuesta Responder a este mensaje
#3 Rodrigo Pizarro Quezada
07/09/2004 - 15:23 | Informe spam
Muchas Gracias funciono de mil maravillas, (ojala todas las preguntas se
respondieran como tu los has hecho)

Salu2
Rodrigo Pizarro Q.

"J. Carlos Herrero" escribió en el mensaje
news:%23Bka$
Hola:

Para cargar de forma manual:

ComboBox2.Items.Add(New AddItem("ALAVA", 1))
ComboBox2.Items.Add(New AddItem("GUIPUZCOA", 20))
ComboBox2.Items.Add(New AddItem("VIZCAYA", 48))
Su valor se ve asi:

Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As Object, ByVal e
As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
Dim item As AddItem = DirectCast(ComboBox2.SelectedItem, AddItem)
MsgBox(item.Clave.ToString())
End Sub

Para cargar desde un dataReader:

lsQuery = "Select ID_PERSONA, NOMBRE from PERSONA order by NOMBRE"
'crear el comando
Dim loComandoPersona As New OleDbCommand(lsQuery, moConexion)
'crear el Datareader
Dim loDRPersona As OleDbDataReader
moConexion.Open()
loDRPersona = loComandoPersona.ExecuteReader 'obtener el Datareader
'leer la filas del Datareader
While loDRPersona.Read()
Me.cboPersona.Items.Add(New AddItem(loDRPersona("NOMBRE"),
loDRPersona("ID_PERSONA")))
End While
loDRPersona.Close()
Me.moConexion.Close()

Su valor es:
DirectCast(Me.cboPersona.SelectedItem, AddItem).Clave.ToString()

En ambos casos tienes que utilizar la siguiente clase:

Public Class AddItem
Private moClave As Object
Private msNombre As String

Public Sub New(ByVal Nombre As String, ByVal Clave As Object)
msNombre = Nombre
moClave = Clave
End Sub

Public Property Clave() As Object
Get
Return moClave
End Get
Set(ByVal Value As Object)
moClave = Value
End Set
End Property

Public Property Nombre() As String
Get
Return msNombre
End Get
Set(ByVal Value As String)
msNombre = Value
End Set
End Property

Public Overrides Function ToString() As String
Return msNombre
End Function
End Class

Espero que te sirva
Un saludo:
Carlos



Rodrigo Pizarro Quezada wrote:
Amigos del Foro,

Tengo un problema con el Combox Box, No tiene la propiedad item data
de mi querido visual 6.0, y tengo la necesidad de llenarlo con los
datos de una tabla (Codigo, Descripcion), se que se puede hacer con
las propiedades : Combo.BeginUpdate
ComboBox1.DataSource = un arreglo o un DTS
ComboBox1.DisplayMember = Descripcion
ComboBox1.ValueMember = Codigo
Combo.EndUpdate

Los datos los rescato de un proceso almacenado y los retorno en un
SqlDataReader.
y en la propiedad ComboBox1.DataSource no me deja asignarle mi
SqlDataReader.

ahora la pregunta es otra es posible llanar el combo box de forma
manual (sin pasarle un datasource) y que quede almacenado Codigo,
Descripcion?


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