Usuário com melhor resposta
Filtrar DataGridView

Pergunta
-
Boa Noite, eu tenho este código para filtrar a minha DataGridView, mas eu gostaria de saber se era possível filtrar as 4 colunas da minha DGV. Para já, o código apenas filtra a primeira coluna.
Obrigado
//FILTRAR
foreach (DataGridViewRow row in dgv1.Rows)
row.Visible = (row.Cells[0].Value.Equals(textBoxPesquisar.Text));
//LIMPAR FILTRO
foreach (DataGridViewRow row in dgv1.Rows)
if (textBoxPesquisar.Text == "")
{
row.Visible = true;
}
Respostas
-
Olá,
Se deseja filtrar, pesquisando por as 4 colunas e se qualquer uma contiver o termo digitado mostre na grid, faz assim:
//FILTRAR foreach (DataGridViewRow row in dgv1.Rows) row.Visible = (row.Cells[0].Value.Equals(textBoxPesquisar.Text)) || (row.Cells[1].Value.Equals(textBoxPesquisar.Text)) || (row.Cells[2].Value.Equals(textBoxPesquisar.Text)) || (row.Cells[3].Value.Equals(textBoxPesquisar.Text));
OBS: Caso queira que pesquise por uma parte apenas do texto mude o Equals por Contains
Valeu!
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Marcado como Resposta joao1999joao quarta-feira, 7 de dezembro de 2016 15:18
Todas as Respostas
-
Olá,
Se deseja filtrar, pesquisando por as 4 colunas e se qualquer uma contiver o termo digitado mostre na grid, faz assim:
//FILTRAR foreach (DataGridViewRow row in dgv1.Rows) row.Visible = (row.Cells[0].Value.Equals(textBoxPesquisar.Text)) || (row.Cells[1].Value.Equals(textBoxPesquisar.Text)) || (row.Cells[2].Value.Equals(textBoxPesquisar.Text)) || (row.Cells[3].Value.Equals(textBoxPesquisar.Text));
OBS: Caso queira que pesquise por uma parte apenas do texto mude o Equals por Contains
Valeu!
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Marcado como Resposta joao1999joao quarta-feira, 7 de dezembro de 2016 15:18
-
-
Vai ter que converter para string, então para substituir o Equals, precisa mudar por .ToString().Contains
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco -
Porque o "row" dá erro?
private void textBoxPesquisar_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
foreach (DataGridViewRow row in dgv1.Rows)
if (textBoxPesquisar.Text == "")
{
row.Visible = true;
}
else
{
foreach (DataGridViewRow row in dgv1.Rows)
row.Visible = (row.Cells[0].Value.Equals(textBoxPesquisar.Text)) ||
(row.Cells[1].Value.Equals(textBoxPesquisar.Text)) ||
(row.Cells[2].Value.Equals(textBoxPesquisar.Text)) ||
(row.Cells[3].Value.Equals(textBoxPesquisar.Text));
}
}
}
- Editado joao1999joao quarta-feira, 7 de dezembro de 2016 19:06
-
É porque já existe uma variavel com esse nome um pouco pra cima, substitua por qualquer outro nome. Mas não esqueça de substituir onde ela é utilizada (dentro do foreach)
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco