none
Añadir item a un combo enlazado con un DataSource (Linq) RRS feed

  • Pregunta

  • Hola!

    Tengo el siguiente procedimiento para cargar un combobox. Me gustaría añadir al principio de la lista un literal tipo "Seleccione..." pero no sé cómo implementarlo en Linq, he probado con .Union pero no acierto con la sintaxis.

    ¿Alguna sugerencia?

    Gracias!!

    Shared Sub LoadComboFamilias(combo As ComboBox)
    
            Dim Familias = (From item In Contexto.Familias Select item).ToList
            combo.DataSource = Familias
            combo.DisplayMember = "Descripcion"
            combo.ValueMember = "IDFamilia"
            combo.SelectedIndex = -1
    
    End Sub

    miércoles, 5 de julio de 2017 18:02

Respuestas

  • Hola:

     Debes de insertar el elemento antes del bind:

    'podrias crear una nueva instancia de Familia, asi
    'luego insertarlo a la coleccion que recuperas
    Familias.Insert(0, New Familia() With {Key.IdFamilia = 0, Key.Descripcion = "<<<Seleccione>>>"})
    
    'Posteriormente haces el bind
    combo.DataSource = Familias
    combo.DisplayMember = "Descripcion"
    combo.ValueMember = "IDFamilia"
    combo.SelectedIndex = -1
     Espero te sea de utilidad.


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

    jueves, 6 de julio de 2017 20:42

Todas las respuestas

  • Por favor.. alguna idea al respecto?

    Muy agradecido!

    jueves, 6 de julio de 2017 20:27
  • Hola:

     Debes de insertar el elemento antes del bind:

    'podrias crear una nueva instancia de Familia, asi
    'luego insertarlo a la coleccion que recuperas
    Familias.Insert(0, New Familia() With {Key.IdFamilia = 0, Key.Descripcion = "<<<Seleccione>>>"})
    
    'Posteriormente haces el bind
    combo.DataSource = Familias
    combo.DisplayMember = "Descripcion"
    combo.ValueMember = "IDFamilia"
    combo.SelectedIndex = -1
     Espero te sea de utilidad.


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

    jueves, 6 de julio de 2017 20:42
  • Gracias por tu aportación. No sé si lo estoy haciendo correctamente, el caso es que sigue sin funcionar.

    Shared Sub LoadComboFamilias(combo As ComboBox) Dim Familias = (From item In Contexto.Familias Select item).ToList Familias.Insert(0, New Familias() With {.IDFamilia = 0, .Descripcion = "<<<Seleccione>>>"}) combo.DataSource = Familias combo.DisplayMember = "Descripcion" combo.ValueMember = "IDFamilia" combo.SelectedIndex = -1 End Sub

    viernes, 7 de julio de 2017 20:28
  • Hola:

     Por favor, nunca digas solo "no funciona" siempre proporciona mas informacion, recuerda que somos desarrolladores no adivinos.

     Jugando a adivinar, remueve la linea:

    combo.SelectedIndex = -1

    Y no comentas tus resultados.


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


    viernes, 7 de julio de 2017 20:45
  • Hola @R_Jorge

    Puedes hacer algo como esto: adaptalo a tus necesidades

    Public Function Lista() As List(Of Categoria)
                Return _categoriaRepository.GetAll().ToList()
    
            End Function
    
            Public Function ListaCategoria() As List(Of Categoria)
                Dim listaItem As List(Of Categoria) = Lista()
                listaItem.Insert(0, Categoria( As new)
                    'Poner a SELECCIONE en -1
                    CategoriaId = -1, Nombre = "<SELECCIONE>"
                
                Return listaItem
    
            End Function

    Saludos


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


    sábado, 8 de julio de 2017 4:42
  • Disculpas! El fallo es mío, revisando el código observé que después de cargar el combo añadiendo el nuevo row 0, llamaba a otro procedimiento que mostraba los campos del registro actual en el form. Tu solución funcionaba ok con el selectindex comentado, eso sí. Gracias.
    sábado, 8 de julio de 2017 5:18