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
- Inicie o Visual Studio .NET.
- No menu Arquivo, aponte para Novo e, em seguida, selecione Projeto.
- Na caixa de diálogo Novo Projeto , selecione Projetos do Visual Basic em Tipos de Projeto e selecione ASP.NET Aplicativo Web em Modelos.
- 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 comohttp://localhost/MyWebApp
.
Criar a página de formulário Web de exemplo
Adicione um novo Formulário Web ao aplicativo Web ASP.NET da seguinte maneira:
- 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.
- Na caixa Nome , digite MySample.aspx e selecione Abrir.
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.
Adicione um DataGrid, um Botão e um controle de servidor Label à página da seguinte maneira:
- Arraste um ASP.NET controle do servidor DataGrid da caixa de ferramentas Web Forms para a página.
- Na janela Propriedades , altere a ID do controle DataGrid para DemoGrid.
- Arraste um ASP.NET controle do servidor Button da caixa de ferramentas Web Forms para a página abaixo do DataGrid.
- Na janela Propriedades , altere a ID do controle Button para GetSelections e altere a propriedade Texto para Obter Seleções.
- Arraste um ASP.NET Controle do servidor Label da caixa de ferramentas Web Forms para a página abaixo do controle Botão.
- Na janela Propriedades , altere a ID do controle Label para ResultsInfo e exclua qualquer texto na propriedade Text .
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>
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
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
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
No menu Arquivo , clique em Salvar Tudo para salvar o Formulário Web e outros arquivos associados ao projeto.
No menu Build no ambiente de desenvolvimento integrado do Visual Studio .NET (IDE), clique em Criar solução.
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.
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 noGetSelections_Click
manipulador de eventos faz loops por meio de cadaDataGridItem
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 oDataKeys
DataGrid.
Referências
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários