none
ComboBox sempre setado com o primeiro valor da tabela do Banco de Dados, como remover isso? RRS feed

  • Pergunta

  • É o seguinte minha duvida: Tenho diversas telas que possuem ComboBox que são alimentados por tabelas do BD, mas acontece o seguinte, sempre que o usuário abre uma dessas telas, o ComboBox já vem setado com o primeiro valor da tabela do BD.

    Exemplo: "comboBoxMarca" é alimentado pela tabela "cad_marcas" la do BD e o primeiro valor da tabela "cad_marcas" é por exemplo "Tramontina Ferramentas", ai sempre que o usuário abre a tela que está o "comboBoxMarca", ele já bem setado com o valor de "Tramontina Ferramentas". Isso acontece em todos os ComboBox do meu sistema que são alimentados por tabelas do BD.

    Duvida: Como faço pra quando o usuário abrir a tela o ComboBox não vir setado com o primeiro valor da tabela do BD?

    Problema: Colocar o comando comboBoxMarca.SelectedIndex = -1 funciona sim, porém eu tenho um botão Alterar Cadastro que quando o usuário clica, aparece o mesmo form porém com os campos preenchidos, ai ele escolhe o que alterar, se eu usar o SelectedIndex = -1, quando o usuário clica em Alterar Cadastro, ele não vem com o campo preenchido corretamente, ele vem em branco, por causa do SelectedIndex = -1.

    Obrigado.

    Atualização: Todas as respostas foram úteis, porém meu código tinha algumas particularidades e alguns erros também que impossibilitavam ou comprometiam o tratamento de ComboBox, optei por usar um método diferente do ComboBox. Agradeço a todos que me passaram novos conhecimentos que serão úteis no futuro. Obrigado.

    sábado, 10 de setembro de 2016 18:02

Respostas

  • A opção de Ravi é valida, o ideal é sempre você deixar uma opção do tipo Selecione um item, é uma boa pratica no cadastro para evitar que o usuário não preste atenção e acabe por gravar um valor qualquer como exemplo o primeiro item de nosso combo.

    Quando estiver em uma alteração você pode setar o valor do combo com o comando 

    comboBox1.SelectedIndex = 0; // Para o primeiro indice

    ou pode selecionar e marcar uma valor desejado assim 

    for (int i = 0; i < cmbVendor.Items.Count; i++)
    
        if (cmbVendor.Items[i].ToString() == Convert.ToString(gridView1.GetFocusedRowCellValue("vVendor")))
        {
            cmbVendor.SelectedIndex = i;
            break;
        }

    ou até mesmo mais fácil ainda

    ComboBox1.SelectedIndex = comboBox1.Items.IndexOf(gridView1.GetFocusedRowCellValue("vVendor"));

    assim você pode selecionar o item que quiser

    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto 

    Visite : www.codigoexpresso.com.br


    terça-feira, 13 de setembro de 2016 02:55

Todas as Respostas

  • Boa tarde, Gabriel

    Vc já tentou adicionar uma linha no inicio do seu combobox?

    Adiciona algo do tipo Selecione na coluna zero do seu combo e as demais colunas do combo com as informações que vem do seu banco de dados.

    combobox1.Insert(0, "Selecione")

    Espero ter ajudado


    segunda-feira, 12 de setembro de 2016 17:32
  • A opção de Ravi é valida, o ideal é sempre você deixar uma opção do tipo Selecione um item, é uma boa pratica no cadastro para evitar que o usuário não preste atenção e acabe por gravar um valor qualquer como exemplo o primeiro item de nosso combo.

    Quando estiver em uma alteração você pode setar o valor do combo com o comando 

    comboBox1.SelectedIndex = 0; // Para o primeiro indice

    ou pode selecionar e marcar uma valor desejado assim 

    for (int i = 0; i < cmbVendor.Items.Count; i++)
    
        if (cmbVendor.Items[i].ToString() == Convert.ToString(gridView1.GetFocusedRowCellValue("vVendor")))
        {
            cmbVendor.SelectedIndex = i;
            break;
        }

    ou até mesmo mais fácil ainda

    ComboBox1.SelectedIndex = comboBox1.Items.IndexOf(gridView1.GetFocusedRowCellValue("vVendor"));

    assim você pode selecionar o item que quiser

    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto 

    Visite : www.codigoexpresso.com.br


    terça-feira, 13 de setembro de 2016 02:55
  • Bom o que você poderia fazer neste caso é criar uma variável publica  e setar ela sempre com o valor -1, e passar este valor ao SelectIndex, quando você vier de um botão alterar senha, você informa que a variável é 0.

    MCP - MCSD Se a Resposta foi util, por favor marque como Valida assim esta contribuindo para gratificar toda a ajuda de nossos colegas. Paulo Caleffi

    terça-feira, 13 de setembro de 2016 11:47
  • O comando combobox1.Insert(0, "Selecione") não consta que existe, creio que o correto seria: combobox1.Items.Insert(0, "Selecione"), caso for, tentei usar esta forma porém acontece um erro: Não é possível modificar a coleção de itens quando a propriedade DataSource está definida.
    terça-feira, 13 de setembro de 2016 14:45
  • Tentou da maneira que passei ?

    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto 

    Visite : www.codigoexpresso.com.br

    terça-feira, 13 de setembro de 2016 22:29
  • Ainda não deu tempo de testar, mas creio que seja a maneira que irá dar certo. Tive que fazer diversas alterações no form que tem os ComboBox, e ainda não terminei a ponto de testar essa forma de tratar meu problema com ComboBox. Assim que testar venho com o feedback.
    quarta-feira, 14 de setembro de 2016 14:29