CÓMO: Utilizar un control Web CheckBox en un DataGrid en Visual Studio .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 306227 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Use esta guía paso a paso para agregar un control CheckBox a un control DataGrid y asociarlo a la tabla Authors de la base de datos Pubs de Microsoft SQL Server.

En Visual Studio .NET Web Forms, puede agregar controles al control DataGrid mediante el objeto TemplateColumn.

Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los Service Packs recomendados que necesitará:
  • Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server o Microsoft Windows NT 4.0 Server
En el presente artículo se supone que está familiarizado con los temas siguientes:
  • El control DataGrid, recuperación de datos y asociación de datos en Web Forms
  • Microsoft Visual Studio .NET
  • Microsoft SQL Server

Cómo agregar un control CheckBox a un control Web DataGrid mediante el objeto TemplateColumn

  1. Cree una nueva aplicación Web de ASP .NET Web.
  2. En el Explorador de servidores, cree una conexión a la base de datos Pubs de SQL Server. Arrastre la tabla Authors del Explorador de servidores hasta WebForm1 para crear los objetos SqlConnection1 y SqlDataAdapter1.
  3. Haga clic con el botón secundario del mouse (ratón) en el objeto SqlDataAdapter1 y, a continuación, haga clic en Generar conjunto de datos.
  4. En el área Elija un conjunto de datos, haga clic en Nuevo. Para el nombre, escriba DsAuthors.
  5. En la sección Elija las tablas que desea agregar al conjunto de datos, seleccione la tabla Authors.
  6. Active la casilla de verificación Agregar este conjunto de datos al diseñador y, a continuación, haga clic en Aceptar para crear el objeto DataSet.
  7. Arrastre un control DataGrid desde el cuadro de herramientas hasta WebForm1 y, a continuación, establezca las siguientes propiedades para la cuadrícula:
    Contraer esta tablaAmpliar esta tabla
    Property NameValue
    DataSourceDsAuthors1
    DataMemberAuthors
    DataKeyFieldAu_id

  8. Agregue el código siguiente al evento Page_Load para llenar el control DataSet y enlazar el control DataGrid al control DataSet:
    SqlDataAdapter1.Fill(DsAuthors1)
    If Not IsPostBack Then
        DataGrid1.DataBind()
    End If
    					
  9. Presione F5 para compilar y ejecutar el programa. Tenga en cuenta que los datos aparecerán en el control DataGrid.

Cómo agregar un control CheckBox a un control Web DataGrid mediante la interfaz de usuario y el objeto TemplateColumn

Una vez completada la instalación inicial, agregue un control CheckBox al DataGrid y asócielo con el control DataSet. Para ello, siga estos pasos:
  1. Seleccione las columnas de DataGrid que desee mostrar.
    1. Haga clic con el botón secundario del mouse (ratón) en el controlador DataGrid y, a continuación, haga clic en Generador de propiedades. En el panel izquierdo, haga clic en Columnas para mostrar las propiedades de Columnas para el control DataGrid.
    2. Desactive la casilla de verificación Crear columnas automáticamente en tiempo de ejecución.
    3. En la sección Lista de columnas, en el cuadro Columnas seleccionadas, agregue los campos au_id y au_lname.
    4. Agregue un objeto TemplateColumn al cuadro Columnas seleccionadas y cambie el Texto del encabezado a Contrato. Haga clic en Aceptar para cerrar el Generador de propiedades.
  2. Edite el objeto ColumnTemplate y enlácelo al control DataSet.
    1. Haga clic con el botón secundario del mouse (ratón) en el control DataGrid y, a continuación, haga clic Editar plantilla, Columnas[2] - Contrato para abrir el editor de plantillas.

      El editor de plantillas tiene cuatro secciones: HeaderTemplate, ItemTemplate, EditItemTemplate y FooterTemplate. Ahora utilizará la sección ItemTemplate.
    2. Use la propiedad ItemTemplate para controlar la apariencia de un elemento de datos en el objeto TemplateColumn. Para ello, cree una plantilla que defina cómo se mostrará el elemento en la columna:
      1. Arrastre un control CheckBox desde el cuadro de herramientas hasta la sección ItemTemplate del objeto TemplateColumn.
      2. Seleccione el control CheckBox. En la ventana Propiedades, busque la opción DataBindings. Haga clic en el icono para abrir el cuadro de diálogo DataBindings.
      3. En la lista Propiedades enlazables, seleccione Activada.
      4. En la sección Enlace simple, en la lista Container, DataItem, seleccione Contrato. Haga clic en Aceptar.

        La parte de verificación del control CheckBox se asociará al campo Contratos, mientras que la parte de texto de dicho control no se asociará y aparecerá en blanco.
      5. Haga clic con el botón secundario del mouse (ratón) en Editar plantilla y, a continuación, haga clic en Terminar edición de plantilla para cerrar el editor de TemplateColumn y regresar a la cuadrícula.
      6. Guarde y pruebe la aplicación. Observe que la columna Contrato aparece como una casilla de verificación y que sus propiedades indican los datos de la tabla Autores de la base de datos Pubs de SQL Server.

Cómo agregar un control CheckBox mediante programación

El código de ejemplo siguiente agrega los controles TemplateColumn y CheckBox a la cuadrícula y asocia los datos mediante programación. En primer lugar, el código de ejemplo agrega un control TemplateColumn y, a continuación, agrega las casillas de verificación a la columna Plantilla. Finalmente, el código agrega un controlador de eventos para asociar el control CheckBox con la base de datos.
  1. Escriba o pegue el código de ejemplo siguiente en el evento Page_Load. El código crea un objeto TemplateColumn y establece su texto de encabezado.
    SqlDataAdapter1.Fill(DsAuthors1)
    
    'Create a new TemplateColumn object.
    Dim tcol As New TemplateColumn()
    With tcol
        .HeaderText = "CheckBox Column"
        ' Call DynamicItemTemplate to add the child controls to the Template 
        ' Column and bind them to the Data source.    
        .ItemTemplate = New DynamicItemTemplate()
    End With
    
    DataGrid1.Columns.Add(tcol)
    If Not IsPostBack Then
         DataGrid1.DataBind()
    End If
    					
  2. Escriba o pegue el código siguiente después de la clase Public Class WebForm1, End.
     Public Class DynamicItemTemplate     ' ITemplate - When implemented by a class, defines the Control object     ' to which child controls and templates belong. These child controls      ' are in turn defined within an inline template.     Implements ITemplate      Public Overridable Overloads Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn         ' InstantiateIn - When implemented by a class, defines the Control          ' object to which child controls and templates belong. These child          ' controls are, in turn, defined within an inline template.         '          ' Create an instance of a CheckBox object.         Dim oCheckBox As CheckBox = New CheckBox()          ' When the DataBinding event of the CheckBox fires, call the sub          ' BindCheckBox to properly bind.           ' AddHandler oCheckBox.DataBinding, AddressOf BindCheckBox         'Add the CheckBox to the controls collection.         container.Controls.Add(oCheckBox)     End Sub       Public Sub BindCheckBox(ByVal sender As Object, ByVal e As EventArgs)         'Create a new instance of a CheckBox.          Dim oCheckBox As CheckBox = CType(sender, CheckBox)         Dim container As DataGridItem = CType(oCheckBox.NamingContainer, DataGridItem)         'Evaluate the data from the Grid item and set the Checked property          ' appropriatly         If container.DataItem("contract").GetType.ToString = "System.DBNull" Then             oCheckBox.Checked = False         Else             oCheckBox.Checked = CBool(container.DataItem("contract"))         End If      End Sub End Class 						
    NOTA: el código de enlace aparece comentado para facilitar la comprensión del proceso.
  3. Guarde y ejecute el código. Observe que se agregaron la columna Plantilla y controles CheckBox no asociados.


Cómo repetir la operación por el control para comprobar la importancia del control CheckBox

Elimine el comentario de la línea de código siguiente en el código de ejemplo mencionado anteriormente:
  'AddHandler oCheckBox.DataBinding, AddressOf BindCheckBox
				
Esta línea llama al controlador de eventos, Public Sub BindCheckBox, cuando el evento DataBinding del control CheckBox se ejecuta. El procedimiento BindCheckBox evalúa los datos y establece adecuadamente la propiedad Checked de la casilla de verificación actual. Observe que se llama al procedimiento para cada una de las filas de la cuadrícula, dado que DataGrid enlaza cada fila.

Referencias

Para obtener información adicional, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
316649 CÓMO: Utilizar el Explorador de servidores de Visual Studio .NET
308656 CÓMO: Abrir una base de datos de SQL Server mediante el proveedor de datos SQL Server de .NET con Visual Basic .NET
307860 INFO: Introducción al enlace de datos de ASP.NET
308485 CÓMO: Crear una página principal/detalle con controles de Web Form
317878 PRB: El control de servidor Web DataGrid no muestra correctamente los caracteres "<" y ">"

Propiedades

Id. de artículo: 306227 - Última revisión: viernes, 20 de enero de 2006 - Versión: 3.2
La información de este artículo se refiere a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET 1.0
Palabras clave: 
kbhowtomaster KB306227

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com