none
Selecionar um item na ComboBox RRS feed

  • Pergunta

  • Pessoal é assim estou fazendo um sistema de estoque com Entity FrameWork Code Firts bom estou na tela de estoque nela tenho duas combo uma Editora e outra Livros o que eu quero, quando iniciar o form ele traz os dados da Editora já esta fazendo e na hora que eu selecionar uma Editora ele trazer na combo editora os dados do livros dessa editora bom do jeito que eu fiz na hora que eu carrego form ele ja esta dando erro olha meu codigo:

            private void cbEditora_SelectedIndexChanged(object sender, EventArgs e)
            {
               
                LivrariaContext contexto = new LivrariaContext();
    
                var EditoraID = Convert.ToInt32(cbEditora.SelectedValue);
                //preencher cbLivros
                var lista = (from livros in contexto.Livros
                             where (livros.EditoraID == EditoraID)
                             select new
                             {
                                 livros.LivrosID,
                                 livros.Titulo
                             }).ToList();
                lista.Insert(0, new { LivrosID = 0, Titulo = "Selecione um livro" });
    
                cbLivros.DataSource = lista;
                cbLivros.ValueMember = "LivrosID";
                cbLivros.DisplayMember = "Titulo";
                cbLivros.Invalidate();
            }

    domingo, 23 de outubro de 2016 16:13

Respostas

  • Faz assim então:

                if (cbEditora.SelectedIndex > 0)
                {
                  var EditoraID = Convert.ToInt32(cbEditora.SelectedValue);
                  //preencher cbLivros
                  var lista = (from livros in contexto.Livros
                             where (livros.EditoraID == EditoraID)
                             select new
                             {
                                 livros.LivrosID,
                                 livros.Titulo
                             }).ToList();
                  lista.Insert(0, new { LivrosID = 0, Titulo = "Selecione um livro" });
    
                  cbLivros.DataSource = lista;
                  cbLivros.ValueMember = "LivrosID";
                  cbLivros.DisplayMember = "Titulo";
                  cbLivros.Invalidate();
                }


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    • Editado André SeccoMVP segunda-feira, 24 de outubro de 2016 17:32
    • Marcado como Resposta CLAUDIO JOSE segunda-feira, 24 de outubro de 2016 18:40
    segunda-feira, 24 de outubro de 2016 17:31

Todas as Respostas

  • Qual o erro?

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    domingo, 23 de outubro de 2016 18:03
  • Na verdade o que esta acontecendo quando eu carrego o form ele esta chamando o metodo cbEditora_SelectedIndexChanged eu não quero isso quero que só quando usuario excolher uma editora
    domingo, 23 de outubro de 2016 19:25
  • Tem certeza que ele está chamando esse método ao iniciar?

    Se sim, o erro deve estar acontecendo por algum motivo, você precisa debugar pra saber qual é o erro. Pode ser que a propriedade SelectedValue esteja nula ou algo do gênero, aí você precisará tratar com uma condição. Mas claro tudo depende de qual erro for.


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    domingo, 23 de outubro de 2016 23:47
  • Sim eu debuguei quando inicia o form ele esta iniciando porque no form loud eu carrego esse combobox entendeu
    segunda-feira, 24 de outubro de 2016 11:27
  • Ok, então verifica (debugando) se o valor da SelectedValue é nula ou vazia, pode ser isso que esteja ocasionando o problema


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 24 de outubro de 2016 11:31
  • Cara descobri o primeiro ID esta vindo com valor 0 porque quero que apareça "Selecione um item" veja meu codigo por isso esta dando esse erro:

                //preecher cbxEditora
                LivrariaContext contexto = new LivrariaContext();
    
                var lista = (from editoras in contexto.Editora
                             select new
                             {
                                 editoras.EditoraId,
                                 editoras.Nome
                             }).ToList();
                lista.Insert(0, new { EditoraId = 0, Nome = "Selecione uma opção" });
    
    
                cbEditora.DataSource = lista;
                cbEditora.ValueMember = "EditoraID";
                cbEditora.DisplayMember = "Nome";
                cbEditora.Invalidate();

    segunda-feira, 24 de outubro de 2016 15:44
  • Ok! Então é só fazer uma condição para passar direto caso o valor selecionado seja 0.

    Exemplo:

                var EditoraID = Convert.ToInt32(cbEditora.SelectedValue);
                if (EditoraID != 0)
                {
                  //preencher cbLivros
                  var lista = (from livros in contexto.Livros
                             where (livros.EditoraID == EditoraID)
                             select new
                             {
                                 livros.LivrosID,
                                 livros.Titulo
                             }).ToList();
                  lista.Insert(0, new { LivrosID = 0, Titulo = "Selecione um livro" });
    
                  cbLivros.DataSource = lista;
                  cbLivros.ValueMember = "LivrosID";
                  cbLivros.DisplayMember = "Titulo";
                  cbLivros.Invalidate();
                }


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 24 de outubro de 2016 16:14
  • cara o erro e justamente nessa linha "var EditoraID = Convert.ToInt32(cbEditora.SelectedValue);" o erro é seguinte:

    {"Não é possível converter um objeto do tipo '<>f__AnonymousType1`2[System.Int32,System.String]' no tipo 'System.IConvertible'."}

    segunda-feira, 24 de outubro de 2016 16:23
  • Cara, uma dica, sempre passe qual é o erro que está ocorrendo (Foi o que pedi na primeira pergunta). Se tivesse passado isso desde o começo, avançaríamos muito mais.

    Tente assim:

    var EditoraID = Convert.ToInt32(cbEditora.SelectedValue.ToString());


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 24 de outubro de 2016 16:50
  • continua dando o mesmo erro
    segunda-feira, 24 de outubro de 2016 17:23
  • Faz assim então:

                if (cbEditora.SelectedIndex > 0)
                {
                  var EditoraID = Convert.ToInt32(cbEditora.SelectedValue);
                  //preencher cbLivros
                  var lista = (from livros in contexto.Livros
                             where (livros.EditoraID == EditoraID)
                             select new
                             {
                                 livros.LivrosID,
                                 livros.Titulo
                             }).ToList();
                  lista.Insert(0, new { LivrosID = 0, Titulo = "Selecione um livro" });
    
                  cbLivros.DataSource = lista;
                  cbLivros.ValueMember = "LivrosID";
                  cbLivros.DisplayMember = "Titulo";
                  cbLivros.Invalidate();
                }


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    • Editado André SeccoMVP segunda-feira, 24 de outubro de 2016 17:32
    • Marcado como Resposta CLAUDIO JOSE segunda-feira, 24 de outubro de 2016 18:40
    segunda-feira, 24 de outubro de 2016 17:31
  • Agora funciono valeu 
    segunda-feira, 24 de outubro de 2016 18:40