VB .NET -  Deletando linhas em DataGridView usando CheckBox


 Neste artigo vou mostrar como podemos deletar linhas em um controle DataGridView usando o CheckBox e os recursos da ADO .NET em uma aplicação Windows Forms usando a linguagem VB .NET.

Eu já escrevi dezenas de artigos sobre o controle DataGridView e parece que o assunto é praticamente inesgotável dadas as opções e abordagens que podemos adotar para resolver um determinado problema.

Neste artigo vamos recordar como incluir um checkbox em um datagridview e como usar a seleção no checkbox para excluir linhas do grid usando ADO .NET.

Você geralmente usa o controle CheckBox no DataGridView para indicar uma seleção de um item ou definir um estado como verdadeiro ou falso.

Para o exemplo deste artigo eu vou acessar a tabela Alunos do banco de dados Escola criado no SQL Server.

A estrutura da tabela Alunos pode ser vista na figura abaixo e ao lado temos o script SQL par criar a tabela:

USE [Escola]
GO
CREATE TABLE [dbo].[Alunos](
	[Id] [int] IDENTITY(1,1) NOT NULL,
	[Nome] [nvarchar](50) NOT NULL,
	[Idade] [int] NULL,
	[Sexo] [nvarchar](50) NULL,
	[Email] [nvarchar](150) NULL,
	[Nascimento] [datetime] NULL,
 CONSTRAINT [PK_Alunos] PRIMARY KEY CLUSTERED 
(
	[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

Este artigo é um artigo para iniciantes e nele vamos realizar as seguintes tarefas :

então vamos ao que interessa...

Recursos Usados

Criando o projeto Windows Forms

Abra o VS 2015 Community e crie um novo projeto (File-> New Project) usando a linguagem VB .NET e o template Windows Forms Application.

Informe um nome a seu gosto. Eu vou usar o nome Vbnet_DgvCheckbox;

Selecione o formulário Form1.vb e partir da ToolBox inclua os seguintes controles:

Disponha os controles conforme o leiaute da figura abaixo:

Inclua uma referência a System.Configuration no seu projeto via menu Add Reference;

Selecione a guia Assemblies e marque o System.Configuration;

A seguir declare os seguintes namespaces no formulário:

Imports System.Configuration
Imports System.Data.SqlClient

Abra  o arquivo App.Config e declare a string de conexão para acessar o banco de dados conforme abaixo: (A sua string de conexão vai ser diferente da usada no exemplo)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
  <connectionStrings>
    <add name="ConexaoSQLServer" connectionString="Data Source=MACORATTI;Initial Catalog=Escola;Integrated Security=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>

 

No início da declaração do formulário inclua o código a seguir onde definimos a variável strConexao usada para acessar o banco de dados:

 Private strConexao As String = ConfigurationManager.ConnectionStrings("ConexaoSQLServer").ConnectionString

Definindo o código do formulário Form1

1- No evento Click do botão de comando - Carregar Dados - inclua o código abaixo:pelo usuário:

  Private Sub btnCarregar_Click(sender As Object, e As EventArgs) Handles btnCarregar.Click
        AdicionarCheckBoxDataGridView()
        Dim sql As String = "SELECT * FROM Alunos"
        Dim tabela As New DataTable()

        Using con = New SqlConnection(strConexao)
            Using cmd = New SqlCommand(sql, con)
                Using da = New SqlDataAdapter(cmd)
                    da.Fill(tabela)
                    dgvDados.DataSource = tabela
                End Using
            End Using
        End Using
    End Sub

Este código selecionamos(SELECT) todos os registros da tabela Alunos, preenche um DataTable e exibe os dados no controle grid.

2- Código do método AdicionarCheckBoxDataGridView()

Private Sub AdicionarCheckBoxDataGridView()
        Dim col As New DataGridViewCheckBoxColumn() With
        {
           .Name = "Selecione as linhas a Deletar"
        }
        dgvDados.Columns.Add(col)
End Sub

O código acima incluir controles CheckBox no DataGridView.

Deletando as linhas do grid

No evento Click do botão - Deletar - temos o código a seguir:

Private Sub btnDeletar_Click(sender As Object, e As EventArgs) Handles btnDeletar.Click

        Dim row As New DataGridViewRow()
        Dim i As Integer = 0
        While i < dgvDados.Rows.Count
            row = dgvDados.Rows(i)

            If Convert.ToBoolean(row.Cells(0).Value) Then
                Dim id As Integer = Convert.ToInt16(row.Cells(1).Value)
                DeletaLinhaDoGrid(id)
                dgvDados.Rows.Remove(row)
                i -= 1
            End If

            i += 1
        End While
 End Sub

Neste código percorremos as linhas do DataGridView e verificamos quais checkbox estão marcados, obtendo o respectivo valor da célula correspondente ao Id do aluno para chamar o método DeletaLinhaDoGrid() passando o id.

O código do método DeletaLinhaDoGrid é visto a seguir:

     Private Sub DeletaLinhaDoGrid(ByVal id As Integer)
        Dim sql As String = "DELETE FROM Alunos WHERE Id = " & id
        Using con = New SqlConnection(strConexao)
            con.Open()
            Using cmd = New SqlCommand(sql, con)
                cmd.ExecuteNonQuery()
            End Using
            con.Close()
        End Using
    End Sub

Neste código definimos a consulta SQL para deletar(DELETE) da tabela Alunos o registro com id igual ao passado para o método.

Executando o projeto e selecionado um checkbox no datagridview, ao clicar no botão Deletar veremos que o mesmo será excluído da tabela e removido do grid:

Pegue o projeto completo aqui :  Vbnet_DgvCheckbox.zip

"Em quem (Jesus) temos a redenção pelo seu sangue, a remissão das ofensas, segundo as riquezas da sua graça," Efésios 1:7

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti