Jump to content

filtro no datagrid


sabing
 Share

Recommended Posts

Bom dia pessoal eu estou querendo fazer um filtro no datagrid para ficar mais clara a pesquisa, mas não estou conseguindo consigo localizar a linha e pintar e tudo mais mais queria tirar a sugeira do datagrid sem precisar da select no banco de dados, segue o codigo que fiz

' PINTANDO A LINHA DA TABELA

For Each row As DataGridViewRow In DataGridView1.Rows

If row.Cells.Item(0).Value = TextBox2.Text Then

Dim rowindex As Integer = row.Index

DataGridView1.Rows(rowindex).DefaultCellStyle.BackColor = Color.Red

End If

Next

Eu queria que ficasse mostrando só as linhas pintadas e não as linhas que não estão pintadas

For Each row As DataGridViewRow In DataGridView1.Rows

If row.Cells.Item(0).Value = TextBox2.Text Then

Dim rowindex As Integer = row.Index

DataGridView1.Rows(rowindex).DefaultCellStyle.BackColor = Color.Red

Else

DataGridView1.Rows.RemoveAt(row.Index)

End If

Next

O problema é que quando eu removo as linhas que não estão pintadas fica sobrando duas linhas que não tem nada aver com a pesquisa uma linha acima e outra abaixo da pesquisa e a cor some

Link to comment
Share on other sites

Sempre que removes uma linha (row) a colecção fica menor e a linha seguinte não é considerada para o Next, logo o ciclo For Each não é apropriado para esse tipo de operação.

Tenta fazer usando um ciclo For começando da ultima para a primeira linha.

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
Share on other sites

Então eu fiz uma logica aqui, mais ainda continua com problema ele so apaga as linhas de baixo da coluna localizada e acima ele não apaga o por que?

Dim cont As Integer = DataGridView1.Rows.Count - 1

While DataGridView1.Rows(cont).Cells.Item(0).Value <> TextBox2.Text

Me.DataGridView1.Rows.RemoveAt(cont)

Me.DataGridView1.CurrentCell.DataGridView.Refresh()

cont = DataGridView1.Rows.Count - 1

End While

Link to comment
Share on other sites

Para que server esse Step-1 ?

Muito obrigado funcionou mais ainda eu estou sem entender o que é o step?

For K As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1

If DataGridView1.Rows(K).Cells.Item(0).Value <> TextBox2.Text Then

Me.DataGridView1.Rows.RemoveAt(K)

Me.DataGridView1.CurrentCell.DataGridView.Refresh()

End If

Next K

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.