none
EF 6.0 ( Popular combobox ) RRS feed

  • Pergunta

  •  

      Olá boa tarde!

      Ontem populei meu combobox assim:

    var consulta = ctx.Categoria_M.Where(x => x.Ativo == true).ToList().OrderBy(x => x.Descricao);
    cboCategoria.DisplayMember = "Descricao";
    cboCategoria.ValueMember = "Id";
    cboCategoria.DataSource = consulta.ToList();
    

     Porém meu cliente quer que eu carregue na primeira linha do combo o texto "Selecione abaixo", não colocarei o -1 porque ao clicar, aquela linha sumirá. Sei fazer isto da forma antiga eu populava com datatable mas com o EF eu não sei.

     Se alguém puder me ajudar;

     

     

    quinta-feira, 3 de abril de 2014 12:51

Todas as Respostas

  • Olá creio que o jeito mais simples seria add sua entidade com o id 0 e nunca deixar salvar o id 0 :

    var consulta = ctx.Categoria_M.Where(x => x.Ativo == true).ToList().OrderBy(x => x.Descricao).ToLis();
    
    consulta.Add(new Categoria_M { Id = 0, Descricao = "<--SELECIONE-->"});
    
    consulta.Orderby(x => x.Descricao).ToList();
    
    cboCategoria.DisplayMember = "Descricao";
    cboCategoria.ValueMember = "Id";
    cboCategoria.DataSource = consulta;
    Tente implementar mais ou menos assim.

    quinta-feira, 3 de abril de 2014 13:00
  • Valeu Daniel,

      Quando eu chegar em casa tentarei. Obrigado.

    quinta-feira, 3 de abril de 2014 13:05
  • Não rolou =.(
    sexta-feira, 4 de abril de 2014 01:40
  • Como fez seu codigo ?
    sexta-feira, 4 de abril de 2014 01:43
  • var consulta = ctx.Categoria_M.Where(x => x.Ativo == true).ToList().OrderBy(x => x.Descricao).ToLis();
    
    consulta.Insert(0, new Categoria_M { Id = 0, Descricao = "Selecione"});
    
    cboCategoria.DisplayMember = "Descricao";
    cboCategoria.ValueMember = "Id";
    cboCategoria.DataSource = consulta;
    sexta-feira, 4 de abril de 2014 01:49
  • Olá,

    Tenho certeza que este código ajudará muita gente rs.

    Segue a solução:

            void carregaCombo()
            {
                try
                {
                    Cursor.Current = Cursors.WaitCursor;
    
                    using (Contexto ctx = new Contexto())
                    {            
                        var consulta = ctx.Categoria_M.Where(x => x.Ativo == true).ToList().OrderBy(x => x.Descricao);
                        
                        DataTable dt = new DataTable();
                        dt.Columns.Add("Id");
                        dt.Columns.Add("Descricao");
                        dt.Rows.Add(0, "SELECIONE ABAIXO");
    
                        foreach (var item in consulta)
                            dt.Rows.Add(item.Id, item.Descricao);
    
                        cboCategoria.DisplayMember = "Descricao";
                        cboCategoria.ValueMember = "Id";
    
                        cboCategoria.DataSource = dt;         
    
                    }
    
                    Cursor.Current = Cursors.Default;
                }
                catch
                {
                    Cursor.Current = Cursors.Default;
                    throw;
                }
            }

    Abraço.

    terça-feira, 8 de abril de 2014 02:03