REMOVER LINHA/REGISTRO NO DATAGRIDVIEW
Tenho um DataGridView do VB.NET onde o usuário digita as informações de cadastro do produto.
Na primeira coluna tenho um CheckBox.
Gostaria de incluir em um evento click de um botão que criei EXCLUIR LINHA para verificar no DataGridView as linhas selecionadas e exclui-las (remover) do DataGridView.
Na primeira coluna tenho um CheckBox.
Gostaria de incluir em um evento click de um botão que criei EXCLUIR LINHA para verificar no DataGridView as linhas selecionadas e exclui-las (remover) do DataGridView.
VC QUER EXCLUIR TODAS SELECIONADAS DE UMA VEZ, OU A CADA LINHA CLICADA ?
Desejo excluir todas as linhas que estiverem selecionadas.
Consegui da forma abaixo. Não sei se esta correto. Mas esta excluindo as linhas selecionadas.
Private Sub cmdExcluiLinhaSel_Click(sender As Object, e As EventArgs) Handles cmdExcluiLinhaSel.Click
Dim i As Integer
With gridProduto
[ô]envia mensagem perguntando se o usuário deseja excluir as linhas selecionadas
If MsgBox([Ô]Deseja excluir as linha(s) selecionada(s)?[Ô], vbExclamation + vbYesNo, [Ô]Excluir[Ô]) = vbYes Then
For i = 0 To .Rows.Count - 1
For Each row As DataGridViewRow In .Rows
If row.Cells([Ô]clSel[Ô]).Value = True Then
.Rows.Remove(row)
End If
Next
Next
End If
End With
End Sub
Consegui da forma abaixo. Não sei se esta correto. Mas esta excluindo as linhas selecionadas.
Private Sub cmdExcluiLinhaSel_Click(sender As Object, e As EventArgs) Handles cmdExcluiLinhaSel.Click
Dim i As Integer
With gridProduto
[ô]envia mensagem perguntando se o usuário deseja excluir as linhas selecionadas
If MsgBox([Ô]Deseja excluir as linha(s) selecionada(s)?[Ô], vbExclamation + vbYesNo, [Ô]Excluir[Ô]) = vbYes Then
For i = 0 To .Rows.Count - 1
For Each row As DataGridViewRow In .Rows
If row.Cells([Ô]clSel[Ô]).Value = True Then
.Rows.Remove(row)
End If
Next
Next
End If
End With
End Sub
Pra quê dois comandos [Ô]For[Ô]? Um apenas não resolve? Testa aÃ
Private Sub cmdExcluiLinhaSel_Click(sender As Object, e As EventArgs) Handles cmdExcluiLinhaSel.Click
Dim i As Integer
With gridProduto
[ô]envia mensagem perguntando se o usuário deseja excluir as linhas selecionadas
If MsgBox([Ô]Deseja excluir as linha(s) selecionada(s)?[Ô], vbExclamation + vbYesNo, [Ô]Excluir[Ô]) = vbYes Then
For Each row As DataGridViewRow In .Rows
If row.Cells([Ô]clSel[Ô]).Value = True Then
.Rows.Remove(row)
End If
Next
End If
End With
End Sub
Private Sub cmdExcluiLinhaSel_Click(sender As Object, e As EventArgs) Handles cmdExcluiLinhaSel.Click
Dim i As Integer
With gridProduto
[ô]envia mensagem perguntando se o usuário deseja excluir as linhas selecionadas
If MsgBox([Ô]Deseja excluir as linha(s) selecionada(s)?[Ô], vbExclamation + vbYesNo, [Ô]Excluir[Ô]) = vbYes Then
For Each row As DataGridViewRow In .Rows
If row.Cells([Ô]clSel[Ô]).Value = True Then
.Rows.Remove(row)
End If
Next
End If
End With
End Sub
Se o usuário selecionar apenas uma linha o comando acima com apenas um FOR...NEXT funciona.
Agora se selecionar 2 ou mais linhas exclui somente uma linha e as demais ficam.
Por isso inclui dois FOR...NEXT desta forma o usuário pode selecionar quantas linhas desejar e todas serão excluÃdas.
Uso VB 6. Estou iniciando no VB.NET. Existe um meio melhor de fazer isso?
Agora se selecionar 2 ou mais linhas exclui somente uma linha e as demais ficam.
Por isso inclui dois FOR...NEXT desta forma o usuário pode selecionar quantas linhas desejar e todas serão excluÃdas.
Uso VB 6. Estou iniciando no VB.NET. Existe um meio melhor de fazer isso?
Desenvolvi uma forma melhor aqui pra você, veja:
Private Sub cmdExcluiLinhaSel_Click(sender As Object, e As EventArgs) Handles cmdExcluiLinhaSel.Click
[ô]envia mensagem perguntando se o usuário deseja excluir as linhas selecionadas
If MsgBox([Ô]Deseja excluir as linha(s) selecionada(s)?[Ô], vbExclamation + vbYesNo, [Ô]Excluir[Ô]) = vbYes Then
RemoverRowsSelecionadas(gridProduto)
End If
End Sub
Public Sub RemoverRowsSelecionadas(Grid As DataGridView)
For Each r As DataGridViewRow In Grid.SelectedRows
Grid.Rows.Remove(r)
Next
End Sub
Private Sub cmdExcluiLinhaSel_Click(sender As Object, e As EventArgs) Handles cmdExcluiLinhaSel.Click
[ô]envia mensagem perguntando se o usuário deseja excluir as linhas selecionadas
If MsgBox([Ô]Deseja excluir as linha(s) selecionada(s)?[Ô], vbExclamation + vbYesNo, [Ô]Excluir[Ô]) = vbYes Then
RemoverRowsSelecionadas(gridProduto)
End If
End Sub
Public Sub RemoverRowsSelecionadas(Grid As DataGridView)
For Each r As DataGridViewRow In Grid.SelectedRows
Grid.Rows.Remove(r)
Next
End Sub
JABA obrigado pelo código. Mas não funcionou.
Pelo que vi se não estou enganado o SelectedRows funciona somente para linhas selecionada inteira (quando fica azul a linha inteira) e não pelo CheckBox que inclui na primeira coluna.
Pelo que vi se não estou enganado o SelectedRows funciona somente para linhas selecionada inteira (quando fica azul a linha inteira) e não pelo CheckBox que inclui na primeira coluna.
Achei isto na net.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If MsgBox([Ô]Deseja excluir as linha(s) selecionada(s)?[Ô], vbExclamation + vbYesNo, [Ô]Excluir[Ô]) = vbYes Then
RemoveRowCheck()
End If
End Sub
Public Sub RemoveRowCheck()
Dim gvLista As New List(Of DataGridViewRow)
Dim arExclui As New ArrayList
For iInd As Integer = 0 To gdvDados.Rows.Count - 1 Step 1
If gdvDados.Rows.Item(iInd).Cells.Item(0).Value = True Then
arExclui.Add(iInd)
End If
Next
For iInd As Integer = arExclui.Count - 1 To 0 Step -1
gdvDados.Rows.RemoveAt(CInt(arExclui.Item(iInd).ToString))
Next
End Sub
Aqui no meu teste deu certo.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If MsgBox([Ô]Deseja excluir as linha(s) selecionada(s)?[Ô], vbExclamation + vbYesNo, [Ô]Excluir[Ô]) = vbYes Then
RemoveRowCheck()
End If
End Sub
Public Sub RemoveRowCheck()
Dim gvLista As New List(Of DataGridViewRow)
Dim arExclui As New ArrayList
For iInd As Integer = 0 To gdvDados.Rows.Count - 1 Step 1
If gdvDados.Rows.Item(iInd).Cells.Item(0).Value = True Then
arExclui.Add(iInd)
End If
Next
For iInd As Integer = arExclui.Count - 1 To 0 Step -1
gdvDados.Rows.RemoveAt(CInt(arExclui.Item(iInd).ToString))
Next
End Sub
Aqui no meu teste deu certo.
Desenvolvi aqui exatamente como você precisa. Agora é só marcar a checkbox na primeira coluna como [Ô]true[Ô] que a row será excluÃda.
Testa aà e nos dá um retorno.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If MsgBox([Ô]Deseja excluir as linha(s) selecionada(s)?[Ô], vbExclamation + vbYesNo, [Ô]Excluir[Ô]) = vbYes Then
RemoverRowsSelecionadas(gridProduto)
End If
End Sub
Public Sub RemoverRowsSelecionadas(Grid As DataGridView)
Dim i As Integer = 0
Do While i < Grid.Rows.Count - 1
If (Grid.Rows(i).Cells(0).Value) Then
Grid.Rows.RemoveAt(i)
i = i - 1
End If
i = i + 1
Loop
End Sub
Testa aà e nos dá um retorno.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If MsgBox([Ô]Deseja excluir as linha(s) selecionada(s)?[Ô], vbExclamation + vbYesNo, [Ô]Excluir[Ô]) = vbYes Then
RemoverRowsSelecionadas(gridProduto)
End If
End Sub
Public Sub RemoverRowsSelecionadas(Grid As DataGridView)
Dim i As Integer = 0
Do While i < Grid.Rows.Count - 1
If (Grid.Rows(i).Cells(0).Value) Then
Grid.Rows.RemoveAt(i)
i = i - 1
End If
i = i + 1
Loop
End Sub
Bom dia! Obrigado a todos. JABA deu certinho muito obrigado.
Tópico encerrado , respostas não são mais permitidas