Passe o loop e examine os valores de controle do CheckBox em uma coluna do DataGrid usando ASP.NET e Visual Basic .NET

Este artigo descreve como fazer loop em cada linha de um controle ASP.NET DataGrid e como determinar se o ASP.NET controle do servidor CheckBox usado para identificar a linha foi selecionado.

Versão original do produto: Visual Basic
Número de KB original: 321881

Resumo

O código de exemplo neste artigo usa o banco de dados Microsoft SQL Server Northwind para preencher o controle DataGrid e, em seguida, adiciona um controle de servidor CheckBox à coluna inicial para cada linha. Essa é uma técnica comum que permite que os usuários selecionem várias linhas específicas em um DataGrid.

Este artigo refere-se aos seguintes namespaces da Biblioteca de Classes .NET Framework:

  • System.Data.SqlClient
  • System.Text

Requisitos

  • Windows
  • .NET Framework
  • IIS (Serviços de Informações da Internet)
  • Visual Studio .NET

Criar um aplicativo Web ASP.NET usando o .NET do Visual Basic

  1. Inicie o Visual Studio .NET.
  2. No menu Arquivo, aponte para Novo e, em seguida, selecione Projeto.
  3. Na caixa de diálogo Novo Projeto , selecione Projetos do Visual Basic em Tipos de Projeto e selecione ASP.NET Aplicativo Web em Modelos.
  4. Na caixa Localização , substitua o nome padrão WebApplication# pelo MyWebApp. Se você estiver usando o servidor local, poderá deixar o nome do servidor como http://localhost. A caixa Local resultante é exibida como http://localhost/MyWebApp.

Criar a página de formulário Web de exemplo

  1. Adicione um novo Formulário Web ao aplicativo Web ASP.NET da seguinte maneira:

    1. Clique com o botão direito do mouse no nó do projeto em Gerenciador de Soluções, aponte para Adicionar e clique em Adicionar Formulário Web.
    2. Na caixa Nome , digite MySample.aspx e selecione Abrir.
  2. Na janela Propriedades , altere a propriedade pageLayout do documento para FlowLayout. Embora você não precise fazer isso para usar o código de exemplo, isso fará com que a apresentação pareça mais limpa.

  3. Adicione um DataGrid, um Botão e um controle de servidor Label à página da seguinte maneira:

    1. Arraste um ASP.NET controle do servidor DataGrid da caixa de ferramentas Web Forms para a página.
    2. Na janela Propriedades , altere a ID do controle DataGrid para DemoGrid.
    3. Arraste um ASP.NET controle do servidor Button da caixa de ferramentas Web Forms para a página abaixo do DataGrid.
    4. Na janela Propriedades , altere a ID do controle Button para GetSelections e altere a propriedade Texto para Obter Seleções.
    5. Arraste um ASP.NET Controle do servidor Label da caixa de ferramentas Web Forms para a página abaixo do controle Botão.
    6. Na janela Propriedades , altere a ID do controle Label para ResultsInfo e exclua qualquer texto na propriedade Text .
  4. Alternar para exibição HTML no editor. Adicione o código ao modelo padrão do DataGrid para construir as colunas. O código resultante para o controle deve aparecer da seguinte maneira:

    <asp:DataGrid id="DemoGrid" runat="server" DataKeyField="CustomerID">
        <Columns>
            <asp:TemplateColumn HeaderText="Customer">
                <ItemTemplate>
                    <asp:CheckBox ID="myCheckbox" Runat="server" />
                </ItemTemplate>
            </asp:TemplateColumn>
        </Columns>
    </asp:DataGrid>
    
  5. Clique com o botão direito do mouse na página e clique em Exibir Código. Isso abre o arquivo de classe code-behind no editor. Adicione as seguintes referências de namespace ao arquivo de classe code-behind:

    Imports System.Data.SqlClient
    Imports System.Text
    
  6. Substitua o código existente para o Page_Load manipulador de eventos pelo seguinte código:

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       If Not IsPostBack Then
          'Create a SqlConnection object.
          'Modify the connection string as necessary for your environment.
          Dim cn As SqlConnection = New SqlConnection("Server=localhost;database=Northwind;UID=sa;PWD=")
          Dim cmd As SqlCommand = New SqlCommand("SELECT * FROM Customers", cn)
          cn.Open()
          Dim reader As SqlDataReader = cmd.ExecuteReader()
          DemoGrid.DataSource = reader
          DataBind()
          reader.Close()
          cn.Close()
       End If
    End Sub
    
  7. Alterne para a exibição Design e clique duas vezes em GetSelections. Isso abre o arquivo de classe code-behind no editor. Substitua o código existente no GetSelections_Click manipulador de eventos pelo seguinte código:

    Private Sub GetSelections_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GetSelections.Click
        Dim rowCount As Integer = 0
        Dim gridSelections As StringBuilder = New StringBuilder()'Loop through each DataGridItem, and determine which CheckBox controls
        'have been selected.
        Dim DemoGridItem As DataGridItem
        For Each DemoGridItem In DemoGrid.Items
    
            Dim myCheckbox As CheckBox = CType(DemoGridItem.Cells(0).Controls(1), CheckBox)
            If myCheckbox.Checked = True Then
                rowCount += 1
                gridSelections.AppendFormat("The checkbox for {0} was selected<br>", _
                DemoGrid.DataKeys(DemoGridItem.ItemIndex).ToString())
            End If
        Next
        gridSelections.Append("<hr>")
        gridSelections.AppendFormat("Total number selected is: {0}<br>", rowCount.ToString())
        ResultsInfo.Text = gridSelections.ToString()
    End Sub
    

Verificar se ele funciona

  1. No menu Arquivo , clique em Salvar Tudo para salvar o Formulário Web e outros arquivos associados ao projeto.

  2. No menu Build no ambiente de desenvolvimento integrado do Visual Studio .NET (IDE), clique em Criar solução.

  3. Em Gerenciador de Soluções, clique com o botão direito do mouse na página Formulário da Web (MySample.aspx) e clique em Exibir no Navegador. Observe que a página exibe os dados na grade. Além disso, uma caixa de marcar é exibida na primeira coluna de cada linha. O usuário pode clicar para selecionar esta caixa marcar para marcar linhas específicas.

  4. Clique para selecionar algumas das caixas de marcar para as linhas e clique em Obter Seleções.

    Depois que a página faz uma viagem de ida e volta para o servidor e executa o código no GetSelections_Click manipulador de eventos, uma lista dos itens selecionados na etapa anterior é exibida. O código no GetSelections_Click manipulador de eventos faz loops por meio de cada DataGridItem um em seu ASP.NET controle de servidor DataGrid, determina se a propriedade Checked do controle CheckBox relacionado é verdadeira e registra o valor de chave associado nessa posição específica para o DataKeys DataGrid.

Referências