none
Adicionar novo registros a partir de um ComboBox RRS feed

  • Pergunta

  • Olá,

    Tive uma idéia aqui e queria saber se é possível fazer...

    Estou fazendo um cadastro de clientes e neste cadastro tenho um ComboBox "Bairros" cujos dados vem de uma tabela "Bairros" em meu DataSet.

    Eu setei esse ComboBox Para DropDown e Setei os Recursos de Autocompletar, está funcionando 100%.

    O que eu quero fazer é o seguinte, eu queria que quando alguem digitasse algum nome de bairro em meu combo, caso ele não fosse encontrado na lista ele fosse adicionado em meu banco na hora de gravar os dados.

    Vou explicar direito como estou trabalhando com os dados para vocês entenderem direitinho...

    Estou utilizando um DataSet com algumas tabelas relácionadas e um BindingSource para navegar entre os registros, quando o usuário clica em Salvar eu dou um DataAdapter.Update(DataSet) e gravo todas as mudanças de uma vez, eu queria q nessa hora de gravar fosse adicionados os bairros novos no meu banco, isto é possível?

    Abraços,

    -Fábio.
    quinta-feira, 22 de junho de 2006 17:49

Respostas

  • É possível, apenas teste se o valor informado está na lista, inclua o registro no DataSet, atualize o banco de dados através do DataAdapter e atulize a lista do combobox.

    Boa sorte!!!

     

    if (comboBox1.Items.Contains(comboBox1.Text) == true)

    {

    if (MessageBox.Show("O ítem " + comboBox1.Text + " NÃO está na lista!" + "\n" + "Deseja adicioná-lo?", "Campo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

    {

    //Insira os comando para inserir o DataRow no DataTable

    }

    }

    quinta-feira, 22 de junho de 2006 18:19

Todas as Respostas

  • É possível, apenas teste se o valor informado está na lista, inclua o registro no DataSet, atualize o banco de dados através do DataAdapter e atulize a lista do combobox.

    Boa sorte!!!

     

    if (comboBox1.Items.Contains(comboBox1.Text) == true)

    {

    if (MessageBox.Show("O ítem " + comboBox1.Text + " NÃO está na lista!" + "\n" + "Deseja adicioná-lo?", "Campo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

    {

    //Insira os comando para inserir o DataRow no DataTable

    }

    }

    quinta-feira, 22 de junho de 2006 18:19
  • Denis,

    Valeu pela ajuda, funcionou aqui :)

    sexta-feira, 23 de junho de 2006 10:50
  • Funcionou mas ainda tem um problema:

    Eu adiciono um Item Teste no combo, ai se eu clico fora e clico denovo e Digito Teste novamente, ele diz que não existe e pergunta se quero adicionar novamente, se eu clicar em Sim ele Adiciona 2 items iguais, eu acho que de alguma forma esse combobox.items.contains() nao está funcionando direito, alguem sabe o porque?

    Aqui está meu código:

        private void cmbBAI_COD_Leave(object sender, EventArgs e)
        {
          if(!cmbBAI_COD.Items.Contains(cmbBAI_COD.Text) && cmbBAI_COD.Text != string.Empty) {
            if (MessageBox.Show("Deseja Adicioná-lo ao banco de dados?", "Bairro não cadastrado!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
              dr = ds.Tables["bairros"].NewRow();
              dr["BAI_NOME"] = cmbBAI_COD.Text;
              dr["CID_COD"] = Convert.ToInt32(cmbEND_CID.SelectedValue);
              ds.Tables["bairros"].Rows.Add(dr);
              cmbBAI_COD.SelectedValue = ds.Tables["bairros"].Rows[ds.Tables["bairros"].Rows.Count - 1].ItemArray[0];
            }
            else
            {
              cmbBAI_COD.Text = string.Empty;
              cmbBAI_COD.Focus();
            }
          }
    sexta-feira, 23 de junho de 2006 11:29
  • Resolvi o problema anterior, agora eu faço um loop pelo nos linhas da tabela do meu dataset para saber se ja tenho aquele bairro ou não, mas agora surgiu outro problema.

    Quando eu adiciono um bairro novo no Combo ele não estava vindo selecionado, ai eu resolvi da seguinte forma:

    cmbBAI_COD.SelectedValue = ds.Tables["bairros"].Rows[ds.Tables["bairros"].Rows.Count - 1].ItemArray[0];

    Assumindo que sempre um registro adicionado vai pro final da tabela, eu vou no final da tabela, vejo qual o código dele e seleciono aquele registro.. até ai tudo bem.. o que acontece é que quando meu Combo está cheio ele seleciona o registro direitinho....


    Mas quando meu Combo não tem nenhum registro e eu adiciono o primeiro, ele não seleciona!

    Já tentei de várias formas e não consigo fazer o primeiro ítem adicionado em um Combo em branco ser selecionado após adicionar o ìtem...

    Alguem tem alguma idéia de como fazer isso funcionar?

    Abraços,

    -Fábio.
    • Sugerido como Resposta bxxx3 segunda-feira, 2 de maio de 2011 15:49
    sexta-feira, 23 de junho de 2006 14:18
  • Use a propriedade SelectedIndex  para marcar o primeiro item da lista.

    cmdBAI_COD.SelectedIndex = 0;

    Boa sorte!!!

    Sempre que um post de qualquer colega responder sua questão, marque-a como respondida.

    sexta-feira, 23 de junho de 2006 21:20