none
Filtrando em datagridview sem conexão com Banco de Dados

    Pergunta

  • Amigos,

    Estou fazendo um trabalho que, tenho um arquivo e o mesmo eu importo para um DataGridView, até o momento, tudo certo.

    Porém, estou com dificuldades em realizar filtros nas colunas do DataGridView, por exemplo:

    Coluna 1 - Nome Tipo de Conta / Coluna 2 - Valor

    Agua  10$

    Luz  20$

    Eu quero filtrar a coluna 1, e que no DataGridView, me retorne todos os registros do tipo de conta "Agua". Busquei alguns artigos na internet antes de perguntar aqui, mas nada foi muito claro. Até agora, consegui criar o códgio que deveria pega o tipo de conta que escrevi no meu TextBox e realiza o filtro, porém, este filtro não me retorna nenhuma informação, como se não existisse nenhuma conta do tipo Agua no DataGridView. Segue o código:

    //CODIGO PARA RETORNAR O ARQUIVO PARA O DATAGRIDVIEW

                

    DataTable dt = new DataTable();
    
                
                string[] Linha = System.IO.File.ReadAllLines(@"C:\Nova pasta (2)\contasV1.txt");
    
                
                for (Int32 i = 0; i < Linha.Length; i++)
                {
                 string[] campos = Linha[i].Split(Convert.ToChar(";"));
    
                if (i == 0)
                    {
                        for (Int32 i2 = 0; i2 < campos.Length; i2++)
                        {
                            
                            DataColumn col = new DataColumn();
                            dt.Columns.Add(col);
                        }
                            
                    }                        
                    dt.Rows.Add(campos);
                  }
                
                dtGrid.DataSource = dt;
    
                   dtGrid.Columns[0].HeaderText = "Tipo";
                   dtGrid.Columns[1].HeaderText = "CPF/CNPJ";
                   dtGrid.Columns[2].HeaderText = "Mês";
                   dtGrid.Columns[3].HeaderText = "Mês Anterior";
                   dtGrid.Columns[4].HeaderText = "Mês Atual";
    
                   //dtGrid.DefaultCellStyle.BackColor = Color.Blue;
                   dtGrid.DefaultCellStyle.ForeColor = Color.Black;
    
    


     Código que estou utilizando para realizar a busca

    public DataSet ds
            {
                get;
                set;
            }
    public DataView dv
            {
                get;
                set;
            }
    
    //CÓDIGO DENTRO DO TEXTBOX
    dv.RowFilter = "Tipo like '%" + textBox1.Text + "%'";
    dtGrid.DataSource = dv;
    Alguém poderia me auxiliar?

    quarta-feira, 27 de maio de 2015 23:23

Respostas

  • Olha depois que a dataGridView estiver preenchida sempre faço dessa forma, veja se serve para você:

    //Declarando o BindingSource, coloque ele como global
    BindingSource bs = new BindingSource();
    
    
    //Atribuo o dataSource da DataGridView1
    bs.DataSource = dataGridView1.DataSource;
    
    //Faço o filtro
    bs.filter="TIPO LIKE '%"+textBox1.Text+"%'";
    
    //Remove anula o DataSource da Grid
    dataGridView1.DataSource=null;
    
    //Atribuo o novo dataSource com o Filtro
    dataGridView1.DataSource = bs.DataSource;
    OBS: Para remover o filtro cria um outro botão e coloca esse código:
    bs.RemoveFilter();



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

    • Sugerido como Resposta Mr. GMSOFT quinta-feira, 28 de maio de 2015 11:17
    • Marcado como Resposta Gustavo Camillozzi sexta-feira, 29 de maio de 2015 19:41
    quinta-feira, 28 de maio de 2015 11:17

Todas as Respostas

  • Olha depois que a dataGridView estiver preenchida sempre faço dessa forma, veja se serve para você:

    //Declarando o BindingSource, coloque ele como global
    BindingSource bs = new BindingSource();
    
    
    //Atribuo o dataSource da DataGridView1
    bs.DataSource = dataGridView1.DataSource;
    
    //Faço o filtro
    bs.filter="TIPO LIKE '%"+textBox1.Text+"%'";
    
    //Remove anula o DataSource da Grid
    dataGridView1.DataSource=null;
    
    //Atribuo o novo dataSource com o Filtro
    dataGridView1.DataSource = bs.DataSource;
    OBS: Para remover o filtro cria um outro botão e coloca esse código:
    bs.RemoveFilter();



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

    • Sugerido como Resposta Mr. GMSOFT quinta-feira, 28 de maio de 2015 11:17
    • Marcado como Resposta Gustavo Camillozzi sexta-feira, 29 de maio de 2015 19:41
    quinta-feira, 28 de maio de 2015 11:17
  • Boa tarde,

    Traduzi o código para vb e me ajudou muito!

    Muito bom funcionou perfeitamente!

    Obrigado!

    quarta-feira, 6 de fevereiro de 2019 13:49