 ASP.NET - 
Excluindo registros no GridView com Checkbox
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