none
ComboBox repete valores. RRS feed

  • Pergunta

  • Boa tarde amigos.

    Estou desenvolvendo um software pra controle de fornecedores e transportadoras. Nesse form tem 5 comboboxe's para selecionar o fornecedor e 5 para a transportadora (como a empresa pediu). A alimentação dos valores desses combos são através de dataset's criados pelo VS2010. Os dois do mesmo modo.

    O problema é que quando eu seleciono um valor em qualquer um dos combos que controla os fornecedores os valores são replicados para todos os combos que seriam pra selecionar os fornecedores, inclusive se eu alterar algum deles a alteração vai pra todos (o que não deveria fazer). Na seleção da transportadora isso não acontece.

    Alguma solução pois não tenho código nenhum além do botão de salvar as seleções?

    quarta-feira, 25 de maio de 2011 16:03

Todas as Respostas

  • Isso ocorre porque você está usando a mesma fonte de dados para popular todos os combobox, cria uma consulta ou variável para chamar e preencher cada combobox separadamente. Se jogar o mesmo dataset para todos eles acontece isso.

    Bruno Ferreira de Souza
    MSP - Microsoft Student Partner
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro
    quarta-feira, 25 de maio de 2011 16:59
  • Mas por que na coluna das transportadoras isso não acontece??? Somente na coluna dos fornecedores.
    quarta-feira, 25 de maio de 2011 17:02
  • É porque para as transportadoras você deve estar preenchendo elas da forma que falei, e dos fornecedores não.

    Você deve fazer +- assim:

    coloca em um método a forma de como popula os fornecedores, ex:

     Private Function CarregaFornecedores() As DataSet
      'aqui você instancia e carrega as classe e retorna a lista de fornecedores
     End Function
    

    O retorno do método eu coloquei dataset, mas você coloca o que retorna no seu, aí você preenche seus combos chamando o método:

      ComboBox1.DataSource = CarregaFornecedores()
      ComboBox2.DataSource = CarregaFornecedores()
      ComboBox3.DataSource = CarregaFornecedores()
    
    se não der, posta o código de como está preenchendo esses combos dos fornecedores.


    Bruno Ferreira de Souza
    MSP - Microsoft Student Partner
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro
    quinta-feira, 26 de maio de 2011 00:46
  • Bom dia Bruno.

    Meu código é todo esse:

          // TODO: This line of code loads data into the 'transportadoraDataSet.Entregadores' table. You can move, or remove it, as needed.
          this.entregadoresTableAdapter1.Fill(this.transportadoraDataSet.Entregadores);
    
          // TODO: This line of code loads data into the 'fornecedoresDataSet.Entregadores' table. You can move, or remove it, as needed.
          this.entregadoresTableAdapter1.Fill(this.fornecedoresDataSet.Entregadores);
    

    Esse problema pode ter surgido por que os fornecedores são mais de 2mil (demora até o dataset carregar todos) e as transportadoras são 20 ou 30 apenas?

    Abaixo desse código que está no load do form tem o botão de salvamento e o botão com de sair. Tudo simples pra funcionar com banco access.

     

    Eu testei a alimentação dos comboxes com um datareader e deu certo, ficando no mesmo tempo de carga.

     

    quinta-feira, 26 de maio de 2011 12:45