Recorra y examine los valores del control CheckBox en una columna DataGrid mediante ASP.NET y Visual Basic .NET

En este artículo se describe cómo recorrer en iteración cada fila de un control DataGrid de ASP.NET y cómo determinar si se ha seleccionado el control de servidor de casilla de verificación ASP.NET que se usa para identificar la fila.

Versión del producto original:   Visual Basic
Número de KB original:   321881

Resumen

El código de ejemplo de este artículo usa la base de datos Neptuno de Microsoft SQL Server para rellenar el control DataGrid y, a continuación, agrega un control de servidor CheckBox a la columna inicial de cada fila. Se trata de una técnica común que permite a los usuarios seleccionar varias filas específicas de un DataGrid.

Este artículo hace referencia a los siguientes espacios de nombres de la biblioteca de clases de .NET Framework:

  • System.Data.SqlClient
  • System.Text

Requirements

  • Windows
  • .NET Framework
  • Internet Information Services (IIS)
  • Visual Studio .NET

Creación de una aplicación Web de ASP.NET mediante Visual Basic .NET

  1. Inicie Visual Studio .NET.
  2. En el menú archivo , elija nuevoy, a continuación, seleccione proyecto.
  3. En el cuadro de diálogo nuevo proyecto , Seleccione proyectos de Visual Basic en tipos de proyectoy, a continuación, seleccione aplicación Web de ASP.net en plantillas.
  4. En el cuadro Ubicación , reemplace el nombre predeterminado WebApplication # por MyWebApp. Si está usando el servidor local, puede dejar el nombre del servidor como http://localhost . El cuadro Ubicación resultante aparece como http://localhost/MyWebApp .

Crear la página de formulario Web Forms de ejemplo

  1. Agregue un nuevo formulario web a la aplicación Web de ASP.NET de la siguiente manera:

    1. Haga clic con el botón secundario en el nodo del proyecto en el explorador de soluciones, elija Agregary, a continuación, haga clic en Agregar formulario web.
    2. En el cuadro nombre , escriba mi ejemplo. aspxy, a continuación, seleccione abrir.
  2. En la ventana propiedades , cambie la propiedad pageLayout del documento a FlowLayout. Aunque no tiene que hacer esto para usar el código de ejemplo, esto hará que la presentación parezca más nítida.

  3. Agregue un control DataGrid, un botón y un control de servidor Label a la página de la siguiente manera:

    1. Arrastre un control de servidor DataGrid de ASP.NET desde el cuadro de herramientas de Web Forms hasta la página.
    2. En la ventana propiedades , cambie el identificador del control DataGrid a DemoGrid.
    3. Arrastre un control de servidor de botón ASP.NET desde el cuadro de herramientas de Web Forms a la página situada debajo de DataGrid.
    4. En la ventana propiedades , cambie el identificador del control de botón a GetSelectionsy, a continuación, cambie la propiedad Text para obtener las selecciones.
    5. Arrastre un control de servidor de etiqueta ASP.NET desde el cuadro de herramientas de formularios Web Forms a la página situada debajo del control de botón.
    6. En la ventana propiedades , cambie el identificador del control de etiqueta a ResultsInfoy, a continuación, elimine el texto de la propiedad Text .
  4. Cambie a la vista HTML en el editor. Agregue el código a la plantilla DataGrid predeterminada para crear las columnas. El código resultante para el control debe aparecer de la siguiente manera:

    <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. Haga clic con el botón secundario en la página y, a continuación, haga clic en Ver código. Se abrirá el archivo de clase de código subyacente en el editor. Agregue las siguientes referencias de espacio de nombres al archivo de clase de código subyacente:

    Imports System.Data.SqlClient
    Imports System.Text
    
  6. Reemplace el código existente para el Page_Load controlador de eventos por el código siguiente:

    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. Cambie a la vista Diseño y, a continuación, haga doble clic en GetSelections. Se abrirá el archivo de clase de código subyacente en el editor. Reemplace el código existente en el GetSelections_Click controlador de eventos por el siguiente 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
    

Comprobar que funciona

  1. En el menú archivo , haga clic en guardar todo para guardar el formulario web y otros archivos asociados con el proyecto.

  2. En el menú generar del entorno de desarrollo integrado (IDE) de Visual Studio .net, haga clic en Generar solución.

  3. En el explorador de soluciones, haga clic con el botón secundario en la página de formulario Web Forms (ejemplo. aspx) y, a continuación, haga clic en ver en el explorador. Observe que la página muestra los datos en la cuadrícula. Además, aparece una casilla de verificación en la primera columna de cada fila. El usuario puede hacer clic para activar esta casilla de verificación para marcar filas específicas.

  4. Haga clic para activar algunas de las casillas de verificación de las filas y, a continuación, haga clic en obtener selecciones.

    Una vez que la página realiza una acción de ida y vuelta al servidor y ejecuta el código en el GetSelections_Click controlador de eventos, aparece una lista de los elementos que seleccionó en el paso anterior. El código en el GetSelections_Click controlador de eventos recorre cada uno DataGridItem de los controles de servidor DataGrid de ASP.net, determina si la propiedad Checked del control de casilla de verificación relacionado es true y, a continuación, registra el valor de la clave asociada en esa posición específica del DataKeys DataGrid.

Referencias