none
C# - Problema ao atualizar o BindingSource da DataGridView (com LINQ) RRS feed

  • Pergunta

  • Senhores, boa tarde.

    Preciso de ajuda com um código que está me deixando perplexo: sou novato em C# e estou batendo cabeça em alguns pontos e preciso de socorro. No projeto tenho um formulário simples e um data source de uma tabela ligada no SQL Server. Nesse formulário tenho uma grid e três text boxes: a grid e 2 text boxes estão com binding para o mesmo data source; o outro text box é para digitar a pesquisa.

    Meu objetivo é que o usuário digite a pesquisa no text box e seja feito um filtro no bindingsource através de LINQ. Segue o código:

    private void Pesquisar()
            {
                if (string.IsNullOrEmpty(toolStripTextBox1.Text))
                {
                    var query = from v in coletasDataSet.UF
                                select v;
    
                    this.ufBindingSource.DataSource = query.ToList();
                }
                else
                {
                    string pesquisa = toolStripTextBox1.Text.ToLower().Trim();
    
                    var query = from v in coletasDataSet.UF
                                     where v.UF.ToLower().Contains(pesquisa) 
                                     select v;
    
                    this.ufBindingSource.DataSource = query.ToList();  
                }
            }

    O problema é que quando faço a pesquisa a grid simplesmente não mostra dado algum. Ele mantém as 2 colunas (UF e ID_UF) e uma linha em branco. Eu já fiz o debug e conferi o resultado da query e ela está vindo corretamente. Alguma sugestão do que possa ser o problema? Detalhe: não posso passar a query.ToList() pra grid pois assim teria os text boxes com o bind mostrando um conjunto de dados e a grid mostrando outro.

    Agradeço a todos pela ajuda!

    Abração,

    Willian Lopes





    sábado, 13 de janeiro de 2018 17:02

Todas as Respostas

  • Senhores, boa tarde.

    Preciso de ajuda com um código que está me deixando perplexo: sou novato em C# e estou batendo cabeça em alguns pontos e preciso de socorro. No projeto tenho um formulário simples e um data source de uma tabela ligada no SQL Server. Nesse formulário tenho uma grid e três text boxes: a grid e 2 text boxes estão com binding para o mesmo data source; o outro text box é para digitar a pesquisa.

    Meu objetivo é que o usuário digite a pesquisa no text box e seja feito um filtro no bindingsource através de LINQ. Segue o código:

    private void Pesquisar()
            {
                if (string.IsNullOrEmpty(toolStripTextBox1.Text))
                {
                    var query = from v in coletasDataSet.UF
                                select v;
    
                    this.ufBindingSource.DataSource = query.ToList();
                }
                else
                {
                    string pesquisa = toolStripTextBox1.Text.ToLower().Trim();
    
                    var query = from v in coletasDataSet.UF
                                     where v.UF.ToLower().Contains(pesquisa) 
                                     select v;
    
                    this.ufBindingSource.DataSource = query.ToList();  
                }
            }

    O problema é que quando faço a pesquisa a grid simplesmente não mostra dado algum. Ele mantém as 2 colunas (UF e ID_UF) e uma linha em branco. Eu já fiz o debug e conferi o resultado da query e ela está vindo corretamente. Alguma sugestão do que possa ser o problema? Detalhe: não posso passar a query.ToList() pra grid pois assim teria os text boxes com o bind mostrando um conjunto de dados e a grid mostrando outro.

    Agradeço a todos pela ajuda!

    Abração,

    Willian Lopes





       Boa tarde Willian.

      O coletasDataSet.UF ele é uma lista de objeto ou um dataset?


    Analista Programador

    segunda-feira, 26 de fevereiro de 2018 19:36