Selecionar um registro pelo ComboBox e preencher outros textbox relacionado a seleção do ComboBox
15 respostas
H
Hygor_H
Galera, bom dia!
Estou tendo dificuldades pra fazer essa função em meu sistema, acredito eu que a lógica está OK mas como fazer a função no SelectedIndexChanged está bem errada.
Em meu ComboBox já consigo listar o que está cadastrado em meu banco de dados:
C# Java Python
Quando eu clicar na opção C# eu quero que o valor relacionado a C# que eu tenho cadastrado no meu banco de dados “Servico” seja setado no TextBox valor. Entenderam? E a mesma coisa pros outros serviços que eu venha cadastrar futuramente no sistema.
Segue os códigos:
publicList<Servicos>ListarServicoComboBoxRelacionado(){try{AbrirConexao();Servicosservico=newServicos();cmd=newSqlCommand("SELECT * FROM Servicos WHERE servico = @servico",con);cmd.Parameters.AddWithValue("@servico",servico.Servico);dr=cmd.ExecuteReader();List<Servicos>addServico=newList<Servicos>();while(dr.Read()){servico.Servico=Convert.ToString(dr["servico"]);servico.Valor=Convert.ToDecimal(dr["valor"]);addServico.Add(servico);}returnaddServico;}catch(Exceptionex){thrownewException(ex.Message);}finally{FecharConexao();}}
E no evento de SelectedIndexChanged (acredito que seja essa a ação) não consigo implementar.
publicDataTableListaEmpresa(){try{conexao=newMySqlConnection(conecta);comando=newMySqlCommand("SELECT * FROM empresa",conexao);MySqlDataAdapterDa=newMySqlDataAdapter();Da.SelectCommand=comando;DataTableDt=newDataTable();Da.Fill(Dt);returnDt;}catch(Exceptionerro){throwerro;}}
se quiser de uma olhada no projeto esta no github, tem algumas coisas pra corrigir mas esta funcionando 100%
H
Hygor_H
Então amigo, eu consigo popular o meu ComboBox com o que está no banco.
Só preciso relacionar as coisas.
C# está cadastrado numa coluna com valor 35,00.
Java 60,00
Quando eu clicar em C# eu quero que o textbox Valor receba o valor 35,00.
H
Hygor_H
Fiz algumas alterações mas não sei se está correto.
publicboolListarServicoComboBoxRelacionado(stringservico,decimalvalor){try{AbrirConexao();cmd=newSqlCommand("SELECT * FROM Servicos WHERE servico = @servico",con);cmd.Parameters.AddWithValue("@servico",servico);dr=cmd.ExecuteReader();if(dr.Read()){servico=Convert.ToString(dr["servico"]);valor=Convert.ToDecimal(dr["valor"]);}else{returnfalse;}returntrue;}catch(Exceptionex){thrownewException(ex.Message);}finally{FecharConexao();}}
Eu fazendo isto ele vai simplesmente copiar o texto que está no combobox pro outro textbox.
Eu não quero isso… eu quero que ele pegue o valor que é do texto C#, do texto Java e etc…
H
Hygor_H
Só encontro tutoriais na internet ensinando dessa maneira:
SqlConnectioncon=newSqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=SysDB;User ID=sa;Password=123456");con.Open();stringsql="SELECT * FROM Servicos WHERE servico = '"+cbServico.Text+"'";SqlCommandcmd=newSqlCommand(sql,con);SqlDataReaderdr=cmd.ExecuteReader();try{while(dr.Read()){stringcomboB=dr["servico"].ToString();decimalvalor=Convert.ToDecimal(dr["valor"].ToString());tbValor.Text=valor.ToString();}}catch(Exception){throw;}
Mas acontece que tudo que estou fazendo, estou criando um classes separadas… em MVC, ficaria muito feio eu fazer dessa forma.
Preciso fazer a lógica em uma classe e popular ela na minha View (na ação do botão).
H
Hygor_H
publicList<Servicos>ListarServicoComboBoxRelacionado(){try{AbrirConexao();Servicosservico=newServicos();cmd=newSqlCommand("SELECT * FROM Servicos WHERE id = @id",con);cmd.Parameters.AddWithValue("@id",servico.Id);dr=cmd.ExecuteReader();List<Servicos>addServico=newList<Servicos>();**//Nãoconseguelerosparametros...obreakpointparaaqui.****if(dr.Read())**{servico.Servico=Convert.ToInt32(dr["id"]).ToString();servico.Valor=Convert.ToDecimal(dr["valor"]);addServico.Add(servico);}else{MessageBox.Show("Nao deu");}returnaddServico;}catch(Exceptionex){thrownewException(ex.Message);}finally{FecharConexao();}}
H
Hygor_H
UP.
Alguém ajuda?
H
Hygor_H
Consegui cara. Ajudou demais!
Agora que fiz as coisas que mandou…
Só corrigindo uma coisa (talvez eu possa estar errado)…
Não há necessidade do ListaEmpresaComboDal() pois ListaEmpresa() já tem o DataTable populado. Correto?
Obrigado.
H
Hygor_H
Outra dúvida, rs…
E se eu quisesse popular mais textbox de acordo com a seleção do ComboBox?
aeciocleysson
que bom que deu certo cara, esse código meu tem algumas coisas que devo corrigir, um deles esse método que você mencionou.
H
Hygor_H
Deu certo! Você é o cara hahahaha. Eu tava ficando sem cabelo (mais) hahahaha.
Você sabe me dizer como eu conseguiria puxar mais informações e colocar em outros textboxs?
aeciocleysson
eu também quebrei a cabeça com isso kkkk.
é só você seguir a mesma lógica, só vai acrescentar na sua consulta sql o que você quer que apareça e os textbox que você quer exibir o resultado.