none
Listar tabela SQL em um Combobox RRS feed

  • Pergunta

  • Olá sou novato no c# e estou com uma dúvida que acho que muitos de vocês tiveram no início de suas carreiras. A dúvida é como listar dados de uma tabela no banco de dados em um combobox. Na verdade eu já consegui fazer os dados aparecer só estou com dificuldades para recuperar o valor no caso a id. 

    A ideia é listar as cidades no combobox para que o usuário diga qual sua cidade de origem.

    Vamos aos códigos:

    Este é meu método que vai até o banco joga todos os resultados em DataTable e depois transforma em uma Lista( de Cidades):

            public CidadeColecao ConsultarCidades()
            {
                try
                {
    
                    CidadeColecao cidadeColecao = new CidadeColecao();
    
                    //Limpando os parametros
                    conexao.LimparParametros();
    
                    //Execultado a consulta
                    DataTable dataTableCidade = conexao.ExecultarConsulta(CommandType.StoredProcedure, "uspCidadeConsultar");
    
                    foreach (DataRow linha in dataTableCidade.Rows)
                    {
                        Cidade cidade = new Cidade();
    
                        cidade.IDCidade = Convert.ToInt32(linha["IDCidade"]);
                        cidade.NomeCidade = Convert.ToString(linha["NomeCidade"]);
    
                        //Adicionando a linha na colecao
                        cidadeColecao.Add(cidade);
    
                    }
    
                    return cidadeColecao;
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }
    

    Até aqui tudo beleza. Com minha lista de Cidades em mãos vou adiciona-la no DataSource do meu Combobox.

    BairroNegocio bairroNegocio = new BairroNegocio();
    
                    CidadeColecao cidadeColecao = bairroNegocio.ConsultarCidades();
    
                    comboBoxCidade.DataSource = cidadeColecao;
                    comboBoxCidade.DisplayMember = "NomeCidade";
                    comboBoxCidade.ValueMember = "IDCidade";

    Até aqui tudo bem, todas as cidades da minha tabela SQL aparecem no Combobox.

    Como pode ser visto no código eu digo que o "NomeCidade" será exibido. E seu valor deveria ser da "IDCidade"

    A dúvida é como recuperar esse valor de IDCidade para poder cadastrar no SQL.

    Criei esse teste para ver o valor que me retona.

    string teste = comboBoxCidade.SelectedItem.ToString();
    
                MessageBox.Show(teste, "Teste");

    e o que aparece é apenas Objetos.Cidade e não o valor da id.
    Obejetos é a namespace e Cidade é o objeto...

    Não tem nenhum erro de sitaxe, apenas isso. Acho que ta faltando uma besterinha. Na lógica esse IDCliente já esta dentro do objeto de transferência. Como eu ja tinha dito, o NomeCidade já aparece no combobox faltando apenas pegar a IDCliente que é o que preciso.

    Se alguém poder me da essa luz, eu agradeço. Qualquer dúvida no código podem perguntar.

    Obrigado... 

    A ideia é listar as cidades no combobox para que o usuário diga qual sua cidade de origem.
    A ideia é listar as cidades no combobox para que o usuário diga qual sua cidade de origem.
    sexta-feira, 13 de junho de 2014 19:39

Todas as Respostas

  • Olá Erisson, 

      falta pouco mesmo, como seu Id está na propriedade ValueMember para recuperar use a propriedade SelectedValue veja :

    int id = (int)suaCombo.SelectedValue;
     Veja que selectedValue retorna object por isso fiz o cast para int pois acredito que o Id seja int, basta fazer o cast para o tipo adequado que vai funcionar !

    sexta-feira, 13 de junho de 2014 19:44
  • Deu certo amigo, muito obrigado. Você tirou uma dúvida que eu passei o dia tentando entender.

    Agora só mais uma dúvida como eu coloco este valor no meu objeto de transferência?

    sexta-feira, 13 de junho de 2014 21:47
  • Deu certo amigo, muito obrigado. Você tirou uma dúvida que eu passei o dia tentando entender.

    Agora só mais uma dúvida como eu coloco este valor no meu objeto de transferência?

    Olá, basta inserir o valor vamos supor que meu objeto de transferencia se chama Tb1 e eu quero passar o id e o texto para o objeto Tb1 veja :

    Tb1 tb = new Tb1();
    tb.Id = (int)combo.SelectedValue;
    tb.Nome = combo.Text;

    sábado, 14 de junho de 2014 21:08