none
Crear item en blanco en combobox en datagridview llenado con un objeto list RRS feed

  • Pregunta

  • Hola buenos días compañeros, tengo la siguiente situacion, lleno un combobox de forma exitosa por medio de un objeto list de una clase:

    aqui esta mi clase

                             

    public class ArticulosList
            {
                public int IndexArtRomana { get; set; }
                public string NombreArticulo { get; set; }



            }

            public List<ArticulosList> ListadoDeArticulosDeRomana(int IdTipoArtRomana, int IdComp)
            {
                List<ArticulosList> ListA = new List<ArticulosList>();
                using (var context = new PesajeEntities())
                {
                    var order = (from o in context.ArticulosDeRomana_List_Get(IdTipoArtRomana, IdComp)
                                 select o).ToList();

                    foreach (ArticulosDeRomana_List_Get_Result Ta in order)
                    {
                        ArticulosList a = new ArticulosList();

                        a.IndexArtRomana = Ta.IndexArtRomana;
                        a.NombreArticulo = Ta.NombreArticulo;


                        ListA.Add(a);
                    }

                }
                return ListA;

            }

    ----------------- y Aca como lleno mi combobox-----------------------------

     NombreArticulo.DisplayMember = "NombreArticulo";
                NombreArticulo.ValueMember = "IndexArtRomana";
                NombreArticulo.DataSource= objArtRomana.ListadoDeArticulosDeRomana(1, idComp);

    Mi duda es, como creo un espacio en blanco en mi combobox ya que si biene en sin nada seleccionado, pero cuando el usuario lo suelta queda marcado en el primer item no dejando poder dejarlo en blanco, espero me puedan orientar, gracias.

    miércoles, 27 de noviembre de 2019 13:51

Respuestas

  • No entendí muy bien, pero creo que lo que deseas es adicionar un elemento vacío (o un '--seleccione de la lista--') a tu combobox cierto?

    Entonces, antes de generar el listado (el foreach que tienes en ListadoDeArticulosDeRomana) puedes adicionar a la lista un objeto con índice 0 (pued ser tambien un número negativo) y nombre de articulo igual a vacío, de esta manera, al asignar el datasource tendrás una lista con el primer elemento en blanco.

    public List<ArticulosList> ListadoDeArticulosDeRomana(int IdTipoArtRomana, int IdComp)
    {
        List<ArticulosList> ListA = new List<ArticulosList>
        {
            new ArticulosList(0, "") //puedes crear un constructor que reciba el índice y el nombre del articulo y que los asigne al objeto.
        };
        using (var context = new PesajeEntities())
        {
            var order = (from o in context.ArticulosDeRomana_List_Get(IdTipoArtRomana, IdComp) select o).ToList();
            foreach (ArticulosDeRomana_List_Get_Result Ta in order)
            {
                ListA.Add(new ArticulosList(Ta.IndexArtRomana, Ta.NombreArticulo));
            }
        }
        return ListA;
    }



    • Editado JPocoata miércoles, 27 de noviembre de 2019 14:49
    • Marcado como respuesta Vladimir Angarita miércoles, 27 de noviembre de 2019 19:36
    miércoles, 27 de noviembre de 2019 14:14
  • hola

    tienes que agregar un item adicional en la lista que asignas en el DataSource

    List<ArticulosList> articulos = objArtRomana.ListadoDeArticulosDeRomana(1, idComp);
    articulos.Insert(0, new ArticulosList() { a.IndexArtRomana = 0, a.NombreArticulo = ""});
    
    NombreArticulo.DisplayMember = "NombreArticulo";
    NombreArticulo.ValueMember = "IndexArtRomana";
    NombreArticulo.DataSource= articulos;

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 27 de noviembre de 2019 18:02

Todas las respuestas

  • No entendí muy bien, pero creo que lo que deseas es adicionar un elemento vacío (o un '--seleccione de la lista--') a tu combobox cierto?

    Entonces, antes de generar el listado (el foreach que tienes en ListadoDeArticulosDeRomana) puedes adicionar a la lista un objeto con índice 0 (pued ser tambien un número negativo) y nombre de articulo igual a vacío, de esta manera, al asignar el datasource tendrás una lista con el primer elemento en blanco.

    public List<ArticulosList> ListadoDeArticulosDeRomana(int IdTipoArtRomana, int IdComp)
    {
        List<ArticulosList> ListA = new List<ArticulosList>
        {
            new ArticulosList(0, "") //puedes crear un constructor que reciba el índice y el nombre del articulo y que los asigne al objeto.
        };
        using (var context = new PesajeEntities())
        {
            var order = (from o in context.ArticulosDeRomana_List_Get(IdTipoArtRomana, IdComp) select o).ToList();
            foreach (ArticulosDeRomana_List_Get_Result Ta in order)
            {
                ListA.Add(new ArticulosList(Ta.IndexArtRomana, Ta.NombreArticulo));
            }
        }
        return ListA;
    }



    • Editado JPocoata miércoles, 27 de noviembre de 2019 14:49
    • Marcado como respuesta Vladimir Angarita miércoles, 27 de noviembre de 2019 19:36
    miércoles, 27 de noviembre de 2019 14:14
  • hola

    tienes que agregar un item adicional en la lista que asignas en el DataSource

    List<ArticulosList> articulos = objArtRomana.ListadoDeArticulosDeRomana(1, idComp);
    articulos.Insert(0, new ArticulosList() { a.IndexArtRomana = 0, a.NombreArticulo = ""});
    
    NombreArticulo.DisplayMember = "NombreArticulo";
    NombreArticulo.ValueMember = "IndexArtRomana";
    NombreArticulo.DataSource= articulos;

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 27 de noviembre de 2019 18:02
  • Gracias mi pana!, es lo que entendiste lo que preguntaba!, Saludos!
    jueves, 28 de noviembre de 2019 11:26
  • Gracias nuevamente Leandro! Saludos!
    jueves, 28 de noviembre de 2019 11:27