Você está na página 1de 7

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:

• Visual Web Developer 2005 Express(VWD 2005)


• SQL Server 2005 Express
• Banco de dados Northwind.mdf

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
ProductNa QuantityPerU UnitPric
HeaderText HeaderText HeaderText
me nit e
SortExpressi ProductNa SortExpressi QuantityPerU SortExpressi UnitPric
on me on nit on e
ProductNa QuantityPerU UnitPric
DataField DataField DataField
me nit e
DataFormati
{0:C}
ng

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("NORTHWNDConnectionStrin
g").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:

• Ela recebe o código do produto como um inteiro;


• Cria uma conexão com o banco de dados: Dim Conn As New
SqlConnection(strConexao)
• Executa a instrução SQL - Delete from Products where
productID=@ProductID
• Define o parâmetro : cmd.Parameters.Add(New
SqlParameter("@ProductID", intProd))
• Executa a instrução SQL - cmd.ExecuteNonQuery()

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.

Você também pode gostar