Usuário com melhor resposta
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 buscapublic 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?
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();
A 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
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();
A 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
-