none
Como gravar no banco o valor selecionado em um comboBox? RRS feed

  • Pergunta

  • opa pessoal estou com uma dúvida que não consegui resolver, como gravar no banco valor selecionado em um comboBox banco de dados?

    utilizo o banco de dados mysql

    estou tentando pega com 

    String selecao = (String)comboBox1.SelectedItem.ToString(); 

    mas não tive sucesso

    domingo, 28 de junho de 2015 02:04

Respostas

  • Vamos lá, vc quer "pegar" o que foi selecionado na combo e jogar em uma string em um string !

    vou me basear nesse cod aqui.

    this.cbFabricante.DataSource = grupos;
    this.cbFabricante.DisplayMember = "NomeFabricante"; // o que vc esta vendo no combo ex: Maria
     this.cbFabricante.ValueMember = "id_fabricante"; // o id relacionado a maria na sua tabela do banco

    teu combo carrego ex.

     id 1|  Maria

    id 2 |  joana

    id 3  | aline

    se vc quer jogar em uma string o "Maria" 

    string Nome = cbfrabicante.text;

    se vc quer o id da maria

    string idmaria = int.parse(cbfrabicante.SelectedValue.ToString());

    agora vc não disse como esta carregando essa sua combobox???

    Postei o cod, para ambos pois fica facil pra entender.

    vc esta usando mysql no meu exemplo uso o sql server, o que vai mudar é o provider .

    Espero ter ajudado

    Att, Wsti.

    • Marcado como Resposta Cristopher C I_ quarta-feira, 1 de julho de 2015 19:24
    domingo, 28 de junho de 2015 13:01

Todas as Respostas

  • thiago

    o teu combo deve ser carregado assim

                con = new SqlConnection(acesso15);
                string strSql = "SELECT * FROM Tbl_Fabricante";
                con = new SqlConnection(acesso15);
                cmd = new SqlCommand(strSql, con);
                con.Open();
                cmd.CommandType = CommandType.Text;
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable grupos = new DataTable();
                da.Fill(grupos);
                this.cbFabricante.DataSource = grupos;
                this.cbFabricante.DisplayMember = "NomeFabricante";
                this.cbFabricante.ValueMember = "id_fabricante";
                con.Close();

    para pegar e gravar no banco

     cmd = new SqlCommand("inserir_Modelo", con);
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.AddWithValue("@Modelo", txbModelo.Text);
                        cmd.Parameters.AddWithValue("@Icao", txbIcal.Text);
                        cmd.Parameters.AddWithValue("@ID_FABRICANTE", int.Parse(cbFabricante.SelectedValue.ToString()));// aqui
                        con.Open();
                        int n = cmd.ExecuteNonQuery();
                        con.Close();
                        if (n > 0)
                        {
                            MessageBox.Show("registro inserido com sucesso.");
                          

    domingo, 28 de junho de 2015 02:23
  • thiago

    o teu combo deve ser carregado assim

                con = new SqlConnection(acesso15);
                string strSql = "SELECT * FROM Tbl_Fabricante";
                con = new SqlConnection(acesso15);
                cmd = new SqlCommand(strSql, con);
                con.Open();
                cmd.CommandType = CommandType.Text;
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable grupos = new DataTable();
                da.Fill(grupos);
                this.cbFabricante.DataSource = grupos;
                this.cbFabricante.DisplayMember = "NomeFabricante";
                this.cbFabricante.ValueMember = "id_fabricante";
                con.Close();

    para pegar e gravar no banco

     cmd = new SqlCommand("inserir_Modelo", con);
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.AddWithValue("@Modelo", txbModelo.Text);
                        cmd.Parameters.AddWithValue("@Icao", txbIcal.Text);
                        cmd.Parameters.AddWithValue("@ID_FABRICANTE", int.Parse(cbFabricante.SelectedValue.ToString()));// aqui
                        con.Open();
                        int n = cmd.ExecuteNonQuery();
                        con.Close();
                        if (n > 0)
                        {
                            MessageBox.Show("registro inserido com sucesso.");
                          

    desculpa Wsti, acho que eu não fui claro o meu banco já estar sendo carregado o problema é que quero pega o valor selecionado no combobox ex : "Maria" esse valor que foi selecionado ser salvo em uma string

    domingo, 28 de junho de 2015 02:45
  • Primeiramente vamos por partes, quando você alimenta o seu Combobox, você faz a consulta no banco e usa um DataTable para armazenar a sua consulta, no qual você usa depois para setar o DataSource do combobox, sendo assim,  o valor do item selecionado não será uma String, mas sim um objeto do tipo DataRowView, se você tivesse adicionado os items manualmente, por exemplo, this.comobobox.Items.Add("Item1") ele retornaria uma string sem problemas.

    Segue abaixo como você pode fazer para recuperar o valor que é mostrado no Combobox.

    var dataRowView = this.comboBox1.SelectedItem as DataRowView;
    var valor = dataRowView.Row.ItemArray[0];

    A primeira linha faz o cast correto do objeto selecionado.

    Na segunda linha, você recupera o valor em exibição no combobox, a propriedade "Row" retorna a linha com as informações do banco, por exemplo, no meu caso aqui eu fiz um select da tabela pessoa, na qual tinha os campos ID e nome, essa linha me retornaria essas informações na propriedade ItemArray, que seria um Array com o valor das propriedades, sendo assim o index 0 teria a informação do ID e o index 1 teria o nome da pessoa.

    OBS: Nesse meu exemplo eu usei o index 0, na sua consulta pode ser a que informação que você quer recuperar esteja em outro index, caso não de certo com o index 0, vá incrementando até achar o index correto.

    Espero ter ajudado.

    domingo, 28 de junho de 2015 05:08
  • Tente dessa forma supondo que ja tenha colocado o DisplayMember e ValueMember da combobox:

    string selecao = comboBox1.SelectedValue.ToString(); 

    Obs: Para pegar o valor deve usar o evento SELECTED INDEX da combo 


    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel


    domingo, 28 de junho de 2015 12:36
  • Vamos lá, vc quer "pegar" o que foi selecionado na combo e jogar em uma string em um string !

    vou me basear nesse cod aqui.

    this.cbFabricante.DataSource = grupos;
    this.cbFabricante.DisplayMember = "NomeFabricante"; // o que vc esta vendo no combo ex: Maria
     this.cbFabricante.ValueMember = "id_fabricante"; // o id relacionado a maria na sua tabela do banco

    teu combo carrego ex.

     id 1|  Maria

    id 2 |  joana

    id 3  | aline

    se vc quer jogar em uma string o "Maria" 

    string Nome = cbfrabicante.text;

    se vc quer o id da maria

    string idmaria = int.parse(cbfrabicante.SelectedValue.ToString());

    agora vc não disse como esta carregando essa sua combobox???

    Postei o cod, para ambos pois fica facil pra entender.

    vc esta usando mysql no meu exemplo uso o sql server, o que vai mudar é o provider .

    Espero ter ajudado

    Att, Wsti.

    • Marcado como Resposta Cristopher C I_ quarta-feira, 1 de julho de 2015 19:24
    domingo, 28 de junho de 2015 13:01