Usuário com melhor resposta
Remover linhas do Datagrid.

Pergunta
-
Pessoal tenho um datagrid que adicionei uma coluna (Columncap), e coloco nela alguns valores manualemnte, as outras colunas do datagrid estao linkado com o banco. Eu queria usar o bindingsource pra filtar com essa coluna que eu criei. tentei fazendo como seria com as colunas normais mas da logo mensagem de campo não identificado, alguem sabe como posso fazer isso?
- Editado RJCERRI quarta-feira, 2 de janeiro de 2013 14:55 assim fica melhor
Respostas
-
Consegui assim
Dim zero As String Dim valorcel As String zero = "0" Dim i As Integer, j As Integer i = 0 j = 0 Do While i <= j valorcel = CStr(DGcaptacao.Item(2, i).Value) If valorcel = zero Then DGcaptacao.Rows.RemoveAt(i) j = DGcaptacao.Rows.Count - 1 Else i = i + 1 End If Loop
- Marcado como Resposta RJCERRI sexta-feira, 4 de janeiro de 2013 18:31
Todas as Respostas
-
Pessoal to tentando outra coisa, to tentando apagar as linhas que a coluna ("Columncap") = 0, mas o exemplo que eu achei trata isso para as linhas selecionadas, como seria para meu caso?
For Each r As DataGridViewRow In DGcaptacao.SelectedRows If DGcaptacao.CurrentRow.Cells("Columncap").ToString = "0" Then DGcaptacao.Rows.Remove(r) end if Next
-
Tente assim mas ele não passa o valor da celula, alguem pode me ajudar?
For icd2 = 0 To DGcaptacao.RowCount - 1
'MsgBox(DGcaptacao.Item("Columncap", icd2).ToString)
If DGcaptacao.CurrentRow.Cells("Columncap").ToString = "0" Then
DGcaptacao.Rows.Remove(DGcaptacao.CurrentRow)
End If
Next -
-
-
Obrigado pela ajuda AleSaggiorato, mas ainda não consegui. Tentei assim, tive que tirar o sinal de = porque dava erro,ele pega o valor certo da coluna mas não consegue comparar com o "0" passa direto.
For Each Col As DataGridViewRow In DGcaptacao.Rows If Col.Cells(2).Value Is "0" Then Col.Cells.Remove(DGcaptacao.CurrentCell) End If Next
Depis tentei assim e da o mesmo problema
For Each Col As DataGridViewRow In DGcaptacao.Rows If Col.Cells(2).Value Is CInt(0).ToString Then Col.Cells.Remove(DGcaptacao.CurrentCell) End If Next
-
Tentei assim também e nada.
Dim zero As String zero = "0" For Each Col As DataGridViewRow In DGcaptacao.Rows 'DGcaptacao.CurrentRow.Cells("Columncap").ToString = "0" If Col.Cells(2).ToString = zero Then Col.Cells.Remove(DGcaptacao.CurrentCell) End If Next
-
Fiz assim agora, assim ele entra na condição mas da um erro na hora de remover a linha
Collection already belongs to a DataGridView control. This operation is no longer valid.
Dim zero As String Dim valorcel As String zero = "0" For Each Col As DataGridViewRow In DGcaptacao.Rows valorcel = CStr(Col.Cells(2).Value) ' DGcaptacao.CurrentRow.Cells("Columncap").ToString 'DGcaptacao.CurrentRow.Cells("Columncap").ToString = "0" If valorcel = zero Then 'Col.Cells(2).Value Is zero Then Col.Cells.Remove(DGcaptacao.CurrentCell) End If valorcel = "" Next
-
Tentei mas esses dois, mas assim nem entra. Pelo menos no outro teste entrou no if mas da o erro na hora de remover a linha
For icd2 = 0 To DGcaptacao.RowCount - 1 If DGcaptacao.CurrentRow.Cells(2).ToString = "0" Then DGcaptacao.Rows.Remove(DGcaptacao.CurrentRow) End If Next ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ For Each r As DataGridViewRow In DGcaptacao.SelectedRows If DGcaptacao.CurrentRow.Cells(2).ToString = "0" Then DGcaptacao.Rows.Remove(r) End If Next
-
-
Galera fiz assim e já melhorou um pouco
Dim zero As String Dim valorcel As String zero = "0" For Each Col As DataGridViewRow In DGcaptacao.Rows valorcel = CStr(Col.Cells(2).Value) If valorcel = zero Then DGcaptacao.Rows.Remove(Col) End If valorcel = "" Next
Mas ele ta pulando, ele encontra um 0 e apaga mas o proximo ele não apaga, o que deve ser?
-
-
-
-
Fiz esse teste
Dim zero As String Dim valorcel As String Dim nome As String zero = "0" For Each Col As DataGridViewRow In DGcaptacao.Rows valorcel = CStr(Col.Cells(2).Value) nome = CStr(Col.Cells(1).Value) If valorcel = zero Then MsgBox(nome) DGcaptacao.Rows.Remove(Col) End If Next DGcaptacao.Refresh()
Ta fazendo assim, ele entra no if e apaga a linha, quando vai fazer de novo ele pula a proxima linha e já me mostra o nome que ta na terceira linha. Alguem pode me ajudar?
-
Consegui assim
Dim zero As String Dim valorcel As String zero = "0" Dim i As Integer, j As Integer i = 0 j = 0 Do While i <= j valorcel = CStr(DGcaptacao.Item(2, i).Value) If valorcel = zero Then DGcaptacao.Rows.RemoveAt(i) j = DGcaptacao.Rows.Count - 1 Else i = i + 1 End If Loop
- Marcado como Resposta RJCERRI sexta-feira, 4 de janeiro de 2013 18:31