none
Recuperar dados do cliente com combobox RRS feed

  • Pergunta

  • Olá,

    tenho uma tabela com dados dos clientes e criei um combobox usando o data bound items para que o usuário selecione o cliente.

    Preciso que ao selecionar o cliente no combobox, um label exiba o CNPJ deste cliente selecionado.

    Qual a maneira mais correta e fácil de fazer isso?

    Recuperar o dado de acordo com o índice selectedvalue do combobox?

    Usar TableAdapter?

    Estou meio perdido na manipulação dos componentes em c# ainda.

    Grato.

    quinta-feira, 17 de setembro de 2015 21:42

Respostas

  • Boa noite,

    Na verdade tenho a mesma dúvida que você, nunca soube realmente o que era melhor mas vou

    te dizer como eu faço hoje (uma alternativa que na minha opinião é mais limpa, mas não sei

    se é a melhor).


    /* Trabalho em 3 camadas (além da view)... Model, DAO  e BO (business object) */
    
    class Cliente
    {
       public int Id { get; set; }
       public string Nome { get; set; }
    }
    
    class ClienteDAO
    {
    /*tenho uma classe de conexão que me devolve objetos de conexão tipo o Command e afins para que eu possa ter o tipo do banco "livre nas minhas classes DAO */
       Conexao conn; 
    
       public List<Cliente> Search(/*parametros*/)
       {
          var lst = new List<Cliente>();
         /* monto o sql num StringBuilder geralmente usando os parametros passados...*/
          using (var reader = new conn.GetComand("select * from cliente").ExecuteReader())
          {
             while (reader.Read())
             {
                 var cli = new Cliente();
                 cli.Codigo = int.Parse(r["cli_codigo"].ToString());
                 cli.Nome = r["cli_nome"].ToString()
                 lst.Add(cli);
             }
          }
          return lst;
       }
    }
    
    
    class FrmCliente()
    {
    
       public void MetodoQueCarregaOComboBox()
       {
          ComboBox1.DataSource = new ClienteDAO().Search(/*parametros*/);
          ComboBox1.ValueMember = "Id";
          ComboBox1.DisplayMember = "Nome";
       }
    


    Em uma googlada rápida...

    http://imasters.com.br/framework/dotnet/saiba-porque-usar-list-e-nao-dataset/

    Sinceramente não sei qual a melhor forma, gosto de trabalhar assim porque para tudo eu sempre manipulo

    Lists do objeto que estou trabalhando, acho mais claro do que ficar usando componentes que envolvem

    banco ou algo assim diretamente na view, na minha opinião (ainda sou relativamente novo em C#, venho

    do Delphi a pouco mais de um ano) contraria o MEU entendimento (que é bem fraco comparado ao pessoal mais experiente) de Orientação a objetos, reaproveitamento de código, clareza no código e tal...

    • Marcado como Resposta Marcos SJ sexta-feira, 18 de setembro de 2015 14:33
    quinta-feira, 17 de setembro de 2015 23:36

Todas as Respostas

  • Boa noite,

    Na verdade tenho a mesma dúvida que você, nunca soube realmente o que era melhor mas vou

    te dizer como eu faço hoje (uma alternativa que na minha opinião é mais limpa, mas não sei

    se é a melhor).


    /* Trabalho em 3 camadas (além da view)... Model, DAO  e BO (business object) */
    
    class Cliente
    {
       public int Id { get; set; }
       public string Nome { get; set; }
    }
    
    class ClienteDAO
    {
    /*tenho uma classe de conexão que me devolve objetos de conexão tipo o Command e afins para que eu possa ter o tipo do banco "livre nas minhas classes DAO */
       Conexao conn; 
    
       public List<Cliente> Search(/*parametros*/)
       {
          var lst = new List<Cliente>();
         /* monto o sql num StringBuilder geralmente usando os parametros passados...*/
          using (var reader = new conn.GetComand("select * from cliente").ExecuteReader())
          {
             while (reader.Read())
             {
                 var cli = new Cliente();
                 cli.Codigo = int.Parse(r["cli_codigo"].ToString());
                 cli.Nome = r["cli_nome"].ToString()
                 lst.Add(cli);
             }
          }
          return lst;
       }
    }
    
    
    class FrmCliente()
    {
    
       public void MetodoQueCarregaOComboBox()
       {
          ComboBox1.DataSource = new ClienteDAO().Search(/*parametros*/);
          ComboBox1.ValueMember = "Id";
          ComboBox1.DisplayMember = "Nome";
       }
    


    Em uma googlada rápida...

    http://imasters.com.br/framework/dotnet/saiba-porque-usar-list-e-nao-dataset/

    Sinceramente não sei qual a melhor forma, gosto de trabalhar assim porque para tudo eu sempre manipulo

    Lists do objeto que estou trabalhando, acho mais claro do que ficar usando componentes que envolvem

    banco ou algo assim diretamente na view, na minha opinião (ainda sou relativamente novo em C#, venho

    do Delphi a pouco mais de um ano) contraria o MEU entendimento (que é bem fraco comparado ao pessoal mais experiente) de Orientação a objetos, reaproveitamento de código, clareza no código e tal...

    • Marcado como Resposta Marcos SJ sexta-feira, 18 de setembro de 2015 14:33
    quinta-feira, 17 de setembro de 2015 23:36
  • Olá Marcos,

    Também venho do Delphi e a manipulação de um Dataset lá já é bem mais familiar que no C#, por isso estou apanhando de BindingSources, TableAdapters e afins.

    Obrigado pela resposta, vou tentar aqui.

    quinta-feira, 17 de setembro de 2015 23:45