none
Dados selecionados da combo RRS feed

  • Pergunta

  • Ao clicar na combo eu seleciona um nome eu queria mostrar os dados de nome em um textbox, tipo endereço, numero , cidade etc... apenas consegui preenche a combobox.

    mais não estou conseguindo coleta os dados.

     

    Alguém poderia me ajuda por favor.

     

     

    terça-feira, 8 de março de 2011 01:59

Respostas

  • Remove este codigo que esta dentro do combobox, voce nao precisa. 

     

    Faz Assim:

    public void PreencheCombo()

            {  
                   String conectar = @"Data Source=\Program Files\ATVENDAS\BancoDados.sdf;Password=root;";
                   
                    string qry = "SELECT idClientes,Endereco,Bairro,UF,CNPJ,Nome,Numero,Cidade  FROM Clientes ORDER BY Nome;";
                    SqlCeConnection Conn = new SqlCeConnection(conectar);

                    try
                    {
                        Conn.Open();
                        SqlCeCommand comando = new SqlCeCommand(qry,Conn);
                        SqlCeDataAdapter da = new SqlCeDataAdapter();
                        
                        da.SelectCommand = comando;
                        DataSet ds = new DataSet();
                        da.Fill(ds,"Clientes");

                       BindingSource clientesBindingSource = New BindingSource();

                       this.cmbNome.DataSource =clientesBindingSource;
                       this.cmbNome.DisplayMember = "Nome";
                       this.cmbNome.ValueMember = "IdClientes";

                this.TextEndereco.DataBindings.Add("Text", clientesBindingSource, "Endereco");
                this.TextBairro.DataBindings.Add("Text", clientesBindingSource, "Bairro");
                this.TextUf.DataBindings.Add("Text", clientesBindingSource, "UF");
                this.TextCnpj.DataBindings.Add("Text", clientesBindingSource, "CNPJ");
                this.TextNome.DataBindings.Add("Text", clientesBindingSource, "Nome");
                this.TextNumero.DataBindings.Add("Text", clientesBindingSource, "Numero");
                this.TextCidade.DataBindings.Add("Text", clientesBindingSource, "Cidade"); 
                      
                                      
                                      
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("erro " + ex);
                    }
                    
            }



    Just Be Humble Malange!
    terça-feira, 8 de março de 2011 16:19
    Moderador
  • Sim, troca a ordem. Vc está associando o datasource antes de definir quem é o display e quem é o value, o programa vai se perder

    troque isto

     

     this.cmbNome.DataSource =clientesBindingSource;
     this.cmbNome.DisplayMember = "Nome";
     this.cmbNome.ValueMember = "IdClientes";
    
    


    para isto


     
    this.cmbNome.DisplayMember = "Nome";
     this.cmbNome.ValueMember = "IdClientes";
     this.cmbNome.DataSource =clientesBindingSource;
    
    []s

     

    quarta-feira, 9 de março de 2011 06:01

Todas as Respostas

  • Você precisa, por exemplo, selecionar Guilherme, no combo. E gostaria que quando fosse selecionado, os campos (textBoxes) fossem preenchidos?

    Como você esta preenchendo o combobox?

    Para fazer isso de, quando selecionar algo no combo executar alguma coisa você pode, no evento do combobox SelectedIndexChanged executar o código que preencheria os textboxes.


    terça-feira, 8 de março de 2011 02:14
  • @Purga

    Voce precisa fazer uma query ou pesquiza na base de dados e pegar os dados correspondentes da  combobox. 

    Acho que voce nao deveria tero nome na combobox. Numa base de dados pode exister varias pessoas com o mesmo nome, assim ficaria difcil voce saber qual deles e a pessoa certa.

    O que podes fazer e mostrar o nome, mais pegar o id desta pessoa na propiedade ValueMember.

       this.combobox1.DataSource = Dataset.Table["Name"];
       this.combobox1.ValueMember = "ID";
       this.combobox1.DisplayMember = "Nome";


    Just Be Humble Malange!
    terça-feira, 8 de março de 2011 15:29
    Moderador
  • Aqui estou fazendo o preenchimento das combo.

    public void PreencheCombo()
            {  
                   String conectar = @"Data Source=\Program Files\ATVENDAS\BancoDados.sdf;Password=root;";
                   
                    string qry = "SELECT idClientes,Endereco,Bairro,UF,CNPJ,Nome,Numero,Cidade  FROM Clientes ORDER BY Nome;";
                    SqlCeConnection Conn = new SqlCeConnection(conectar);

                    try
                    {
                        Conn.Open();
                        SqlCeCommand comando = new SqlCeCommand(qry,Conn);
                        SqlCeDataAdapter da = new SqlCeDataAdapter();
                        
                        da.SelectCommand = comando;
                        DataSet ds = new DataSet();
                        da.Fill(ds,"Clientes");

                       this.cmbNome.DataSource = ds.Tables["Clientes"];
                       this.cmbNome.DisplayMember = "Nome";
                       this.cmbNome.ValueMember = "IdClientes";

                       this.cmbCodigo.DataSource = ds.Tables["Clientes"];
                       this.cmbCodigo.DisplayMember = "IdClientes";
                       this.cmbCodigo.ValueMember = "Nome";

                       
                                      
                                      
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("erro " + ex);
                    }
                    
            }





    E aqui é o preenchimento das TextBox
    mais esta dando erro.  
    private void cmbCodigo_SelectedIndexChanged(object sender, EventArgs e)
            {
                this.TextEndereco.DataBindings.Add("Text", clientesBindingSource, "Endereco");
                this.TextBairro.DataBindings.Add("Text", clientesBindingSource, "Bairro");
                this.TextUf.DataBindings.Add("Text", clientesBindingSource, "UF");
                this.TextCnpj.DataBindings.Add("Text", clientesBindingSource, "CNPJ");
                this.TextNome.DataBindings.Add("Text", clientesBindingSource, "Nome");
                this.TextNumero.DataBindings.Add("Text", clientesBindingSource, "Numero");
                this.TextCidade.DataBindings.Add("Text", clientesBindingSource, "Cidade");
            }
    terça-feira, 8 de março de 2011 16:12
  • E aqui é o preenchimento das TextBox
    mais esta dando erro.  
    private void cmbCodigo_SelectedIndexChanged(object sender, EventArgs e)
            {
                this.TextEndereco.DataBindings.Add("Text", clientesBindingSource, "Endereco");
                this.TextBairro.DataBindings.Add("Text", clientesBindingSource, "Bairro");
                this.TextUf.DataBindings.Add("Text", clientesBindingSource, "UF");
                this.TextCnpj.DataBindings.Add("Text", clientesBindingSource, "CNPJ");
                this.TextNome.DataBindings.Add("Text", clientesBindingSource, "Nome");
                this.TextNumero.DataBindings.Add("Text", clientesBindingSource, "Numero");
                this.TextCidade.DataBindings.Add("Text", clientesBindingSource, "Cidade");
            }
    terça-feira, 8 de março de 2011 16:12
  • Remove este codigo que esta dentro do combobox, voce nao precisa. 

     

    Faz Assim:

    public void PreencheCombo()

            {  
                   String conectar = @"Data Source=\Program Files\ATVENDAS\BancoDados.sdf;Password=root;";
                   
                    string qry = "SELECT idClientes,Endereco,Bairro,UF,CNPJ,Nome,Numero,Cidade  FROM Clientes ORDER BY Nome;";
                    SqlCeConnection Conn = new SqlCeConnection(conectar);

                    try
                    {
                        Conn.Open();
                        SqlCeCommand comando = new SqlCeCommand(qry,Conn);
                        SqlCeDataAdapter da = new SqlCeDataAdapter();
                        
                        da.SelectCommand = comando;
                        DataSet ds = new DataSet();
                        da.Fill(ds,"Clientes");

                       BindingSource clientesBindingSource = New BindingSource();

                       this.cmbNome.DataSource =clientesBindingSource;
                       this.cmbNome.DisplayMember = "Nome";
                       this.cmbNome.ValueMember = "IdClientes";

                this.TextEndereco.DataBindings.Add("Text", clientesBindingSource, "Endereco");
                this.TextBairro.DataBindings.Add("Text", clientesBindingSource, "Bairro");
                this.TextUf.DataBindings.Add("Text", clientesBindingSource, "UF");
                this.TextCnpj.DataBindings.Add("Text", clientesBindingSource, "CNPJ");
                this.TextNome.DataBindings.Add("Text", clientesBindingSource, "Nome");
                this.TextNumero.DataBindings.Add("Text", clientesBindingSource, "Numero");
                this.TextCidade.DataBindings.Add("Text", clientesBindingSource, "Cidade"); 
                      
                                      
                                      
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("erro " + ex);
                    }
                    
            }



    Just Be Humble Malange!
    terça-feira, 8 de março de 2011 16:19
    Moderador
  • Malange fiz conforme esta o codigo em cima mais agora não esta nem preenchendo a combo, 

     

    Alguma dica?

                   


    quarta-feira, 9 de março de 2011 02:24
  • Sim, troca a ordem. Vc está associando o datasource antes de definir quem é o display e quem é o value, o programa vai se perder

    troque isto

     

     this.cmbNome.DataSource =clientesBindingSource;
     this.cmbNome.DisplayMember = "Nome";
     this.cmbNome.ValueMember = "IdClientes";
    
    


    para isto


     
    this.cmbNome.DisplayMember = "Nome";
     this.cmbNome.ValueMember = "IdClientes";
     this.cmbNome.DataSource =clientesBindingSource;
    
    []s

     

    quarta-feira, 9 de março de 2011 06:01
  • Eduardo Cury

    Troquei a ordem do datasource mais esta dando erro (EroSystem.ArgumentException : This causes two bindings in the collection to bind to the same property. Parameter name: binging)

    já pesquisei na internet mais esta dificil. 

    quarta-feira, 9 de março de 2011 13:32
  • Eduardo 

    Troquei a ordem do datasource mais não deu certo ainda. uma pergunta

    os textbox não deveria esta no selectedIndex da combo igual o exemplo a baixo

     

     private void cmbCodigo_SelectedIndexChanged(object sender, EventArgs e)

            {
                this.TextEndereco.DataBindings.Add("Text", clientesBindingSource, "Endereco");


    Mesmo assim ele esta dando erro (Erp System.ArgumentException: Isso faz duas ligações na coleçãopara ligar a mesma propriedade. Nome do parâmetro: binging
    )
    quarta-feira, 9 de março de 2011 13:59
  • Não Purga.

     

    Qdo vc cria um databinding, vc está dizendo que a propriedade Text do textbox (neste caso) está ligada diretamente com a propriedade X da sua classe, entende?

    Aí qdo vc cria uma instancia dessa classe, qualquer alteração feita no textbox, já altera diretamente o valor da propriedade (da classe) ligada áquele textbox

    E isso pode ser feito a qualquer momento, no form_load, em qualquer lugar. É apenas uma preparação , certo?

     

    Ficou mais claro agora? Obviamente, vc não pode ter dois databindings iguais pra uma mesma propriedade do elemento (no caso textbox).

    É por isso que ele ta dando esse erro. 

    quarta-feira, 9 de março de 2011 15:39
  • Olha faz assim:

    Faz Assim:

    public void PreencheCombo()

     

            {  
                   String conectar = @"Data Source=\Program Files\ATVENDAS\BancoDados.sdf;Password=root;";
                   
                    string qry = "SELECT idClientes,Endereco,Bairro,UF,CNPJ,Nome,Numero,Cidade  FROM Clientes ORDER BY Nome;";
                    SqlCeConnection Conn = new SqlCeConnection(conectar);

                    try
                    {
                        Conn.Open();
                        SqlCeCommand comando = new SqlCeCommand(qry,Conn);
                        SqlCeDataAdapter da = new SqlCeDataAdapter();
                        
                        da.SelectCommand = comando;
                        DataSet ds = new DataSet();
                        da.Fill(ds,"Clientes");

                       BindingSource clientesBindingSource = New BindingSource();

                       this.cmbNome.DataSource =clientesBindingSource;
                       this.cmbNome.DisplayMember = "Nome";
                       this.cmbNome.ValueMember = "IdClientes";

                this.TextEndereco.DataBindings.Add("Text", clientesBindingSource, "Endereco");
                this.TextBairro.DataBindings.Add("Text", clientesBindingSource, "Bairro");
                this.TextUf.DataBindings.Add("Text", clientesBindingSource, "UF");
                this.TextCnpj.DataBindings.Add("Text", clientesBindingSource, "CNPJ");
                this.TextNome.DataBindings.Add("Text", clientesBindingSource, "Nome");
                this.TextNumero.DataBindings.Add("Text", clientesBindingSource, "Numero");
                this.TextCidade.DataBindings.Add("Text", clientesBindingSource, "Cidade"); 
                      
                                                                       
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("erro " + ex);
                    }
                    
            }

    Pega este procedimento e coloca no teu form_load

    PreencheCombo();

    Voce nao precisa fazer mais nada....vai carregar a sua combobox1 e quando voce selecionar algo no combobox1 ele vai sincronizar automaticamente....



    Just Be Humble Malange!
    quarta-feira, 9 de março de 2011 16:30
    Moderador
  • Malange me desculpe esta te  incomodo, mais não esta dando certo, debugging linha por linha esse codigo que postou quando chega nos textbox ele não passa e da erro. 

     

    se coloco esse apenas esse codigo 

                       this.cmbNome.DataSource =clientesBindingSource;

                       this.cmbNome.DisplayMember = "Nome";
                       this.cmbNome.ValueMember = "IdClientes";

    ele tambem não preenche a combo certo. ai quando eu mudo de codigo coloque esse

                       this.cmbNome.DisplayMember = "Nome";
                       this.cmbNome.ValueMember = "IdClientes";
                        this.cmbNome.DataSource = ds.Tables["Clientes"];

    ai sim preenche a combo. esqueci de te dixe estou fazendo para dispositivo movel, utilizando a regra de tres camadas MODEL,BLL,Dao

    os textBox esta certo desse assim.


       this.TextEndereco.DataBindings.Add("Text", clientesBindingSource, "Endereco");
                

    Desde ja muito obrigado.



    quinta-feira, 10 de março de 2011 01:41