ASP.NET -
Excluindo registros no GridView com Checkbox
Vamos construir neste artigo uma interface para excluir registros de forma a apresentar ao usuário em um GridView a relação dos registros para exclusão permitindo que seja feita uma seleção dos registros a serem excluídos através da utilização do controle CheckBox.
Para o exemplo mostrado eu vou o Visual Web Developer 2005 e a tabela Products do banco de dados Northwind.mdf, portanto você vai precisar dos seguintes recursos instalados:
Todos os produtos acima gratuitos e podem ser obtidos via download e usados para desenvolvimento e distribuição sem pagamento adicional. É pegar , estudar e usar...
Nota: Para que o projeto funcione corretamente fazer uma copiar o banco de dados Northwind.mdf e no banco de dados que iremos usar remover o relacionamento entre a tabela Products e a tabela Orders_Details.
Inicie o VWD 2005 e crie um novo web site no menu File-New Web Site usando o template ASP .NET web site , location File System, linguagem Visual Basic com o nome de GridViewDeleteCheckBox;
Crie uma conexão com o banco de dados Northwind.mdf , se ela ainda não existir;
Seleciona a página Default.aspx e, no modo Design, inclua um controle GridView - gdvProducts e um botão de comando- btnDelete, na páginas a partir da ToolBox;
Vamos definir no GridView os campos da tabela que iremos exibir e criar um template Field para exibir o checkbox conforme a figura abaixo:

Para incluir os campos da tabela Products selecione o GridView e em GridView Tasks selecione Edit Columns;
Na janela Fields, em Available Fields, selecione BoundField e clique no botão Add definindo na janela de properties as seguintes propriedades:

| Definição das colunas do GridView - gdvProducts | ||||||||||||||||||||||
Campo: ProductName
|
Campo: QuantityPerUnit
|
Campo: UnitPrice
|
||||||||||||||||||||
Para definir o Template Field , na janela Fields, em Available Fields, selecione a opção TemplateField e clique no botão Add;
A seguir defina a propriedade HeaderText como : Excluir Seleção e clique no botão OK;

Selecione novamente o GridView e em GridView Tasks selecione Edit Templates;
Em ItemTemplate inclua um controle CheckBox com o nome chk1 e um controle Label - lblID;
Selecione o Label incluído e em Edit DataBindings defina a vinculação com o campo ProductID da tabela Products pela expressão: Bind("ProductID")
![]() |
![]() |
Selecione o controle Button e defina sua propriedade Text como: Excluir Itens Selecionados;
Vamos agora criar o código para exibir os registros e no GridView e para excluir os itens selecionados.
Primeiro defina no arquivo web.config a string de conexão com o banco de dados Northwind.mdf. No exemplo eu estou usando a seguinte string de conexão definida no web.config: (No seu computador local a string poderá ser diferente.)
| <connectionStrings> <add name="NORTHWNDConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=C:\dados\NORTHWND.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient"/> </connectionStrings> |
Inclua a declaração para o namespace System.Data.SqlClient responsável pela conexão com o banco de dados;
Imports System.Data.sqlclient
Define a variável string para a string de conexão : Dim strConexao As String
Abra o arquivo Default.aspx.vb e no evento Load da página
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
strConexao = ConfigurationManager.ConnectionStrings("NORTHWNDConnectionString").ConnectionString
If Not Page.IsPostBack Then
exibeGrid()
End If
End Sub
|
Esta rotina obtém a string de conexão do arquivo web.config e verifica se é um postback para exibir os dados no GridView chamando a rotina exibeGrid();
A rotina exibeGrid() tem o seguinte código:
Sub exibeGrid()
Dim Conn As New SqlConnection(strConexao)
Dim dr As SqlDataReader
Dim mySQL As String
mySQL = "SELECT TOP 5 [ProductID], [ProductName], [QuantityPerUnit], [UnitPrice] FROM [Products]"
Dim cmd As New SqlCommand(mySQL, Conn)
Conn.Open()
dr = cmd.ExecuteReader
gvProducts.DataSource = dr
gvProducts.DataBind()
Conn.Close()
End Sub
|
Esta rotina seleciona somente os 5 primeiros registros da tabela Products e os exibe usando um DataReader no GridView;
O código do evento Click do botão btnDelete é o seguinte:
Protected Sub btnDelete_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Excluir()
End Sub
|
A rotina Excluir() é mostrada abaixo:
Sub Excluir()
Dim i As Integer
For i = 0 To gvProducts.Rows.Count - 1
Dim dgItem As GridViewRow = gvProducts.Rows(i)
Dim lblid As Label = CType(dgItem.FindControl("lblid"), Label)
Dim cb As CheckBox = CType(dgItem.FindControl("chk1"), CheckBox)
If cb.Checked Then
DeletaRegistro(CInt(lblid.Text))
End If
Next i
exibeGrid()
End Sub
|
Esta rotina percorre as linhas do GridView e verifica se o controle CheckBox - chk1 - esta selecionado. Se existir a seleção a rotina DeletaRegistro() é chamada passando como parâmetro o código do produto contido no controle lblid;
A rotina DeletaRegistro() possui o seguinte código:
Sub DeletaRegistro(ByVal intProd As Integer)
Dim Conn As New SqlConnection(strConexao)
Dim cmd As New SqlCommand("Delete from Products where productID=@ProductID", Conn)
cmd.Parameters.Add(New SqlParameter("@ProductID", intProd))
Conn.Open()
cmd.ExecuteNonQuery()
Conn.Close()
End Sub
|
A rotina efetua as seguintes operações:
Como excluir registro pode ser uma tarefa perigosa vamos solicitar a confirmação do usuário usando uma função JavaScript.
Crie a seguinte rotina JavaScript e a inclua na seção <Head> </Head> da página:
<script language=javascript>
function ConfirmaExclusao(){
return confirm('Deseja excluir este registro?');
}
</script>
|
No botão de comando btnDelete() inclua o defina o evento OnClientClick chamando a função JavaScript:
<asp:Button ID="btnDelete" runat="server" Text="Excluir Itens Selecionados" OnClick="btnDelete_Click" OnClientClick="javascript:return ConfirmaExclusao();"/>
Executando o projeto , ao selecionar alguns registros e clicar no botão de comando iremos obter:

Criamos assim uma interface para excluir registros com seleção através de CheckBox no GridView. Como exercício deixo para você otimizar a rotina JavaScript.
Eu sei é apenas ASP.NET , mas eu
gosto... ![]()
Referências:
José Carlos Macoratti