none
Displaymember en combobox RRS feed

  • Pregunta

  • Buenas,

    Os expongo mi duda:

    Quiero llenar un combobox utilizando como datasource un datatable. Esto no me supone problema. El inconveniente lo tengo cuando quiero asignar el displaymember del combobox porque me salen tantos displays como filas tiene la columna del datatable que utilizo como datasource.

    Lo que yo quiero es que el displaymember sea solo una cosa (por ejemplo el nombre del datatable) y no todas las filas. He probado a agrupar el datatable en un dataset pero así tampoco me sale.

    Puede ayudarme alguien?. Muchas gracias

    miércoles, 22 de mayo de 2013 19:27

Todas las respuestas

  • Un combobox enlazado tendrá tantas filas como tiene la tabla que enlazas..., quizás es otro tipo de control el que se ajustaría a lo que quieres ¿no?

    "Option Strict On" no es opcional, es necesario.

    miércoles, 22 de mayo de 2013 19:34
  • Lo que yo quiero es que el displaymember sea solo una cosa

    es que es solo una cosa, porque haces

    combobox1.DisplayMemeber = "nombrecampo"

    combobox1.DataSource = dt

    defiens solo un unico campo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    miércoles, 22 de mayo de 2013 19:58
  • Hola cuando dices

    El inconveniente lo tengo cuando quiero asignar el displaymember del combobox porque me salen tantos displays como filas tiene la columna del datatable que utilizo como datasource.

    Se repite el mismo campo varias veces? Posiblemente necesites hacer un Distinct si esto es lo que está ocurriendo aunque no dejas muy claro el inconveniente que tienes.


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    miércoles, 22 de mayo de 2013 21:02
  • Un combobox enlazado tendrá tantas filas como tiene la tabla que enlazas..., quizás es otro tipo de control el que se ajustaría a lo que quieres ¿no?

    "Option Strict On" no es opcional, es necesario.

    Quizás necesite enlazar otro tipo de datasource que no sea un datatable para que no me salgan todas las filas. He probado con el dataset pero tampoco me sale. Se te ocurre algo?

    Por si sirve de algo, os comento que el datatable lo utilizo para rellenar un datagridview. Este datagridview tiene una columna que se llama "Nombre proceso" y las celdas de esta columna (son 4 celdas y por tanto 4 filas) están combinadas verticalmente mediante el cellpainting. El valor de esta celda combinada es un string que llamo "proceso A".  Lo que necesito es:

    Enlazar al combobox los datos obtenidos en el datagridview y que estén representados en el displaymember únicamente por "proceso A" . Efectivamente en el combobox aparece "proceso A" pero no representa a la celda combinada sino a la fila donde está colocado este string. Por tanto como son 4 filas, las otras 3 filas me aparecen en blanco y eso es lo que quiero evitar, quiero solo un displaymember.

    Gracias por vuestras respuestas. Saludos

    jueves, 23 de mayo de 2013 9:03
  • No entiendo. Intenta redactar mejor tu problema.


    "Option Strict On" no es opcional, es necesario.

    jueves, 23 de mayo de 2013 18:45
  • hola,

    Cuando he escrito mi respuesta anterior he intentado hacerlo de la forma más clara posible. Siento no poder encontrar una forma de expresarme mejor, quizás sea por mi nivel principiante en este lenguaje de programación. Ya buscaré una solución alternativa.

    Muchas gracias por vuestra ayuda. Saludos

    jueves, 23 de mayo de 2013 22:36
  • Hola David 

    Que yo sepa el comboBox con datatable lo cargo de eta manera

     Public Function CargarCargo() As DataTable
    
            Using cn As DbConnection = clsConexionAD.Conectar
                Dim factory As DbProviderFactory = clsConexionAD.GetFactory()
                Dim da As DbDataAdapter = factory.CreateDataAdapter
                Dim cmd As DbCommand = cn.CreateCommand
                cmd.CommandText = "SELECT * FROM Cargo WHERE carCodigo <> '01'"
                da.SelectCommand = cmd
                Dim dt As New DataTable
                da.Fill(dt)
                Return dt
            End Using
        End Function

    Private Sub LlenarPerfil(ByVal perfil As Boolean)
            cboPerfil.DataBindings.Clear()
    
            Dim dt As DataTable = objUsuarioCL.CargarPerfil
            cboPerfil.DataSource = dt
            cboPerfil.DisplayMember = dt.Columns(1).ColumnName
            cboPerfil.ValueMember = dt.Columns(0).ColumnName
            If perfil = False Then cboPerfil.SelectedIndex = -1
        End Sub
    De otra manera que lo hagan con datatable desconosco


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    jueves, 23 de mayo de 2013 23:24
  • Hola Amigo David.

     Para un mejor entendimiento podrías subir una imagen de tu combobox, un ejemplo de los datos que cargas y un ejemplo de como deseas que te aparezca en el ComboBox por favor, a veces las palabras confunden pero el idioma de las imágenes es universal...

    Espero tu respuesta.


    Saludos desde Monterrey, Nuevo León, México!!!

    jueves, 23 de mayo de 2013 23:34