DataControlField Clase

Definición

Actúa como clase base para todos los tipos de campos de control de datos, que representa una columna de datos en controles enlazados a datos tabulares como DetailsView y GridView.

public ref class DataControlField abstract : System::Web::UI::IDataSourceViewSchemaAccessor, System::Web::UI::IStateManager
[System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))]
public abstract class DataControlField : System.Web.UI.IDataSourceViewSchemaAccessor, System.Web.UI.IStateManager
[<System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))>]
type DataControlField = class
    interface IStateManager
    interface IDataSourceViewSchemaAccessor
Public MustInherit Class DataControlField
Implements IDataSourceViewSchemaAccessor, IStateManager
Herencia
DataControlField
Derivado
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar BoundField objetos y ButtonField , que se derivan de DataControlField, para mostrar filas en un DetailsView control . El DetailsView control tiene la AutoGenerateRows propiedad establecida falseen , lo que permite mostrar un subconjunto de los datos devueltos por la SelectCommand propiedad .

<%@ page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  <form id="form1" runat="server">

    <asp:sqldatasource
      id="SqlDataSource1"
      runat="server"
      connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
      selectcommand="Select * From Employees">
    </asp:sqldatasource>

    <asp:detailsview
      id="DetailsView1"
      runat="server"
      allowpaging="True"
      datasourceid="SqlDataSource1"
      height="208px"
      width="264px"
      autogeneraterows="False">
        <fields>

          <asp:boundfield
            sortexpression="LastName"
            datafield="LastName"
            headertext="LastName">
              <itemstyle backcolor="Yellow">
              </itemstyle>
          </asp:boundfield>

          <asp:boundfield
            sortexpression="FirstName"
            datafield="FirstName"
            headertext="FirstName">
              <itemstyle forecolor="#C00000">
              </itemstyle>
          </asp:boundfield>

          <asp:buttonfield
            text="TestButton"
            buttontype="Button">
          </asp:buttonfield>

        </fields>
    </asp:detailsview>

  </form>
</body>
</html>
<%@ page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  <form id="form1" runat="server">

    <asp:sqldatasource
      id="SqlDataSource1"
      runat="server"
      connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
      selectcommand="Select * From Employees">
    </asp:sqldatasource>

    <asp:detailsview
      id="DetailsView1"
      runat="server"
      allowpaging="True"
      datasourceid="SqlDataSource1"
      height="208px"
      width="264px"
      autogeneraterows="False">
        <fields>

          <asp:boundfield
            sortexpression="LastName"
            datafield="LastName"
            headertext="LastName">
              <itemstyle backcolor="Yellow">
              </itemstyle>
          </asp:boundfield>

          <asp:boundfield
            sortexpression="FirstName"
            datafield="FirstName"
            headertext="FirstName">
              <itemstyle forecolor="#C00000">
              </itemstyle>
          </asp:boundfield>

          <asp:buttonfield
            text="TestButton"
            buttontype="Button">
          </asp:buttonfield>

        </fields>
    </asp:detailsview>

  </form>
</body>
</html>

En el ejemplo de código siguiente se muestra cómo extender la BoundField clase para crear un campo enlazado personalizado que se puede usar en un GridView control . De forma similar a la CheckBoxField clase , la RadioButtonField clase representa una columna de true datos o false . Sin embargo, aunque los datos a los que está enlazada la CheckBoxField clase pueden ser cualquier conjunto de true valores o false , el conjunto de datos al que está enlazada la RadioButtonField clase solo puede tener un true valor en un momento dado. En este ejemplo se muestra cómo implementar los ExtractValuesFromCell métodos y InitializeCell , dos métodos importantes de todas las clases derivadas de DataControlField.

namespace Samples.AspNet.CS {

  using System;
  using System.Collections;
  using System.Collections.Specialized;
  using System.ComponentModel;
  using System.Security.Permissions;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;

  [AspNetHostingPermission(SecurityAction.Demand, 
      Level=AspNetHostingPermissionLevel.Minimal)]
  public sealed class RadioButtonField : CheckBoxField {

    public RadioButtonField() {
    }

    // Gets a default value for a basic design-time experience. 
    // Since it would look odd, even at design time, to have 
    // more than one radio button selected, make sure that none
    // are selected.
    protected override object GetDesignTimeValue() {
        return false;
    }
    // This method is called by the ExtractRowValues methods of 
    // GridView and DetailsView. Retrieve the current value of the 
    // cell from the Checked state of the Radio button.
    public override void ExtractValuesFromCell(IOrderedDictionary dictionary,
                                               DataControlFieldCell cell,
                                               DataControlRowState rowState,
                                               bool includeReadOnly)
    {

      // Determine whether the cell contains a RadioButton 
      // in its Controls collection.
      if (cell.Controls.Count > 0) {
        RadioButton radio = cell.Controls[0] as RadioButton;

        object checkedValue = null;
        if (null == radio) {
          // A RadioButton is expected, but a null is encountered.
          // Add error handling.
          throw new InvalidOperationException
              ("RadioButtonField could not extract control.");
        }
        else {
            checkedValue = radio.Checked;
        }

        // Add the value of the Checked attribute of the
        // RadioButton to the dictionary.
        if (dictionary.Contains(DataField))
          dictionary[DataField] = checkedValue;
        else
          dictionary.Add(DataField, checkedValue);
      }
    }
    // This method adds a RadioButton control and any other 
    // content to the cell's Controls collection.
    protected override void InitializeDataCell
        (DataControlFieldCell cell, DataControlRowState rowState) {

      RadioButton radio = new RadioButton();

      // If the RadioButton is bound to a DataField, add
      // the OnDataBindingField method event handler to the
      // DataBinding event.
      if (DataField.Length != 0) {
        radio.DataBinding += new EventHandler(this.OnDataBindField);
      }

      radio.Text = this.Text;

      // Because the RadioButtonField is a BoundField, it only
      // displays data. Therefore, unless the row is in edit mode,
      // the RadioButton is displayed as disabled.
      radio.Enabled = false;
      // If the row is in edit mode, enable the button.
      if ((rowState & DataControlRowState.Edit) != 0 ||
          (rowState & DataControlRowState.Insert) != 0) {
        radio.Enabled = true;
      }

      cell.Controls.Add(radio);
    }
  }
}
Imports System.Collections.Specialized
Imports System.Collections
Imports System.ComponentModel
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace Samples.AspNet.VB

    <AspNetHostingPermission(SecurityAction.Demand, _
        Level:=AspNetHostingPermissionLevel.Minimal)> _
    Public NotInheritable Class RadioButtonField
        Inherits CheckBoxField

        Public Sub New()
        End Sub

        ' Gets a default value for a basic design-time experience. Since
        ' it would look odd, even at design time, to have more than one
        ' radio button selected, make sure that none are selected.
        Protected Overrides Function GetDesignTimeValue() As Object
            Return False
        End Function

        ' This method is called by the ExtractRowValues methods of
        ' GridView and DetailsView. Retrieve the current value of the 
        ' cell from the Checked state of the Radio button.
        Public Overrides Sub ExtractValuesFromCell( _
            ByVal dictionary As IOrderedDictionary, _
            ByVal cell As DataControlFieldCell, _
            ByVal rowState As DataControlRowState, _
            ByVal includeReadOnly As Boolean)
            ' Determine whether the cell contain a RadioButton 
            ' in its Controls collection.
            If cell.Controls.Count > 0 Then
                Dim radio As RadioButton = CType(cell.Controls(0), RadioButton)

                Dim checkedValue As Object = Nothing
                If radio Is Nothing Then
                    ' A RadioButton is expected, but a null is encountered.
                    ' Add error handling.
                    Throw New InvalidOperationException( _
                        "RadioButtonField could not extract control.")
                Else
                    checkedValue = radio.Checked
                End If


                ' Add the value of the Checked attribute of the
                ' RadioButton to the dictionary.
                If dictionary.Contains(DataField) Then
                    dictionary(DataField) = checkedValue
                Else
                    dictionary.Add(DataField, checkedValue)
                End If
            End If
        End Sub
        ' This method adds a RadioButton control and any other 
        ' content to the cell's Controls collection.
        Protected Overrides Sub InitializeDataCell( _
            ByVal cell As DataControlFieldCell, _
            ByVal rowState As DataControlRowState)

            Dim radio As New RadioButton()

            ' If the RadioButton is bound to a DataField, add
            ' the OnDataBindingField method event handler to the
            ' DataBinding event.
            If DataField.Length <> 0 Then
                AddHandler radio.DataBinding, AddressOf Me.OnDataBindField
            End If

            radio.Text = Me.Text

            ' Because the RadioButtonField is a BoundField, it only 
            ' displays data. Therefore, unless the row is in edit mode, 
            ' the RadioButton is displayed as disabled.
            radio.Enabled = False
            ' If the row is in edit mode, enable the button.
            If (rowState And DataControlRowState.Edit) <> 0 _
                OrElse (rowState And DataControlRowState.Insert) <> 0 Then
                radio.Enabled = True
            End If

            cell.Controls.Add(radio)
        End Sub

    End Class

End Namespace

En el ejemplo de código siguiente se muestra cómo usar la RadioButtonField clase , que se proporciona en el ejemplo anterior, en un GridView control . En este ejemplo, el GridView control muestra los datos de un equipo deportivo. Los datos del jugador se mantienen en una tabla de datos que incluye una columna id. , columnas para los nombres del jugador y una columna verdadera o falsa que identifica al capitán del equipo. La RadioButtonField clase se usa para mostrar qué miembro del equipo es el capitán del equipo actual. El GridView control se puede editar para elegir un nuevo capitán del equipo o cambiar otra información del jugador.

<%@ page language="C#" %>
<%@ Register Tagprefix="aspSample"
             Namespace="Samples.AspNet.CS"
             Assembly="Samples.AspNet.CS" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:gridview
          id="GridView1"
          runat="server"
          allowpaging="True"
          datasourceid="SqlDataSource1"
          allowsorting="True"
          autogeneratecolumns="False"
          autogenerateeditbutton="True"
          datakeynames="AnID">
            <columns>

                <aspSample:radiobuttonfield
                  headertext="RadioButtonField"
                  text="TeamLeader"
                  datafield="TrueFalse">
                </aspSample:radiobuttonfield>

                <asp:boundfield
                  insertvisible="False"
                  sortexpression="AnID"
                  datafield="AnID"
                  readonly="True"
                  headertext="AnID">
                </asp:boundfield>

                <asp:boundfield
                  sortexpression="FirstName"
                  datafield="FirstName"
                  headertext="FirstName">
                </asp:boundfield>

                <asp:boundfield
                  sortexpression="LastName"
                  datafield="LastName"
                  headertext="LastName">
                </asp:boundfield>

              </columns>
        </asp:gridview>
        <asp:sqldatasource
          id="SqlDataSource1"
          runat="server"
          connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
          selectcommand="SELECT AnID,FirstName,LastName,TeamLeader FROM Players"
          updatecommand="UPDATE Players SET TrueFalse='false';UPDATE Players SET TrueFalse='true' WHERE AnID=@anID">
        </asp:sqldatasource>

    </form>
</body>
</html>
<%@ page language="VB" %>
<%@ Register Tagprefix="aspSample"
             Namespace="Samples.AspNet.VB"
             Assembly="Samples.AspNet.VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">

        <asp:gridview
          id="GridView1"
          runat="server"
          allowpaging="True"
          datasourceid="SqlDataSource1"
          allowsorting="True"
          autogeneratecolumns="False"
          autogenerateeditbutton="True"
          datakeynames="AnID">
            <columns>
                <aspSample:radiobuttonfield
                  headertext="RadioButtonField"
                  text="TeamLeader"
                  datafield="TrueFalse">
                </aspSample:radiobuttonfield>

                <asp:boundfield
                  insertvisible="False"
                  sortexpression="AnID"
                  datafield="AnID"
                  readonly="True"
                  headertext="AnID">
                </asp:boundfield>

                <asp:boundfield
                  sortexpression="FirstName"
                  datafield="FirstName"
                  headertext="FirstName">
                </asp:boundfield>

                <asp:boundfield
                  sortexpression="LastName"
                  datafield="LastName"
                  headertext="LastName">
                </asp:boundfield>

              </columns>
        </asp:gridview>
        <asp:sqldatasource
          id="SqlDataSource1"
          runat="server"
          connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
          selectcommand="SELECT AnID,FirstName,LastName,TeamLeader FROM Players"
          updatecommand="UPDATE Players SET TrueFalse='false';UPDATE Players SET TrueFalse='true' WHERE AnID=@anID">
        </asp:sqldatasource>

    </form>
</body>
</html>

Comentarios

La DataControlField clase actúa como clase base para todos los tipos de campo de control de datos. Los controles enlazados a datos usan campos de control de datos para representar un campo de datos, de forma similar a como un DataGridColumn objeto representa un tipo de columna en el DataGrid control.

Use las clases derivadas de DataControlField para controlar cómo se muestra un campo de datos en un control enlazado a datos como DetailsView o GridView. En la tabla siguiente se enumeran los distintos tipos de campos de control de datos proporcionados por ASP.NET.

Tipo de campo de columna Descripción
BoundField Muestra el valor de un campo de un origen de datos como texto.
ButtonField Muestra un botón de comando en un control enlazado a datos. Dependiendo del control, esto le permite mostrar una fila o una columna con un control de botón personalizado, como un botón Agregar o quitar.
CheckBoxField Muestra una casilla en un control enlazado a datos. Este tipo de campo de control de datos se usa normalmente para mostrar campos con un valor booleano.
CommandField Muestra los botones de comando integrados para realizar operaciones de edición, inserción o eliminación en un control enlazado a datos.
HyperLinkField Muestra el valor de un campo de un origen de datos como hipervínculo. Este tipo de campo de control de datos permite enlazar un segundo campo a la dirección URL del hipervínculo.
ImageField Muestra una imagen en un control enlazado a datos.
TemplateField Muestra el contenido definido por el usuario en un control enlazado a datos según una plantilla especificada.

También puede ampliar las DataControlField clases y BoundField para crear sus propios tipos de campo de control de datos.

La DataControlField clase proporciona muchas propiedades que determinan cómo se presentan los elementos de la interfaz de usuario (UI) en el control enlazado a datos. No todos los controles usan todas las propiedades de campo de control de datos disponibles al representar una interfaz de usuario. Por ejemplo, el DetailsView control , que muestra los campos de control de datos como filas, incluye un elemento de encabezado para cada campo de control de datos, pero ningún elemento de pie de página. Por lo tanto, el DetailsView control omite las FooterText propiedades y FooterStyle . Sin GridView embargo, el control usa las FooterText propiedades y FooterStyle si la ShowFooter propiedad está establecida trueen . Del mismo modo, las propiedades del campo de control de datos afectan a la presentación de elementos de la interfaz de usuario en función de cuál sea el elemento. La ItemStyle propiedad siempre se aplica al campo . Si el tipo derivado de DataControlField contiene un control , como en las ButtonField clases o CheckBoxField , la ControlStyle propiedad se aplica al campo .

Constructores

DataControlField()

Inicializa una nueva instancia de la clase DataControlField.

Propiedades

AccessibleHeaderText

Obtiene o establece el texto que se representa como el valor de la propiedad AbbreviatedText en algunos controles.

Control

Obtiene una referencia al control de datos al que está asociado el objeto DataControlField.

ControlStyle

Obtiene el estilo de cualquier control de servidor web contenido en el objeto DataControlField.

DesignMode

Obtiene un valor que indica si un campo de control de datos está visible actualmente en un entorno en tiempo de diseño.

FooterStyle

Obtiene o establece el estilo del pie de página del campo del control de datos.

FooterText

Obtiene o establece el texto que se muestra en el elemento de pie de página de un campo de control de datos.

HeaderImageUrl

Obtiene o establece la dirección URL de una imagen que se muestra en el elemento de encabezado de un campo de control de datos.

HeaderStyle

Obtiene o establece el estilo del encabezado del campo del control de datos.

HeaderText

Obtiene o establece el texto que se muestra en el elemento de encabezado de un campo de control de datos.

InsertVisible

Obtiene un valor que indica si el objeto DataControlField está visible cuando su control enlazado a datos primario está en modo de inserción.

IsTrackingViewState

Obtiene un valor que indica si el objeto DataControlField está guardando los cambios en su estado de vista.

ItemStyle

Obtiene el estilo de cualquier contenido basado en texto mostrado por un campo de control de datos.

ShowHeader

Obtiene o establece un valor que indica si se representa el elemento de encabezado de un campo de control de datos.

SortExpression

Obtiene o establece una expresión de ordenación utilizada por un control de origen de datos para ordenar los datos.

ValidateRequestMode

Obtiene o establece un valor que especifica si el control valida la entrada de cliente.

ViewState

Obtiene un diccionario con información de estado que permite guardar y restaurar el estado de vista de un objeto DataControlField en las distintas solicitudes de la misma página.

Visible

Obtiene o establece un valor que indica si se representa un campo de control de datos.

Métodos

CloneField()

Crea una copia duplicada del objeto actual derivado de DataControlField.

CopyProperties(DataControlField)

Copia las propiedades del objeto derivado de DataControlField actual al objeto DataControlField especificado.

CreateField()

Cuando se reemplaza en una clase derivada, crea un objeto derivado de DataControlField vacío.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
ExtractValuesFromCell(IOrderedDictionary, DataControlFieldCell, DataControlRowState, Boolean)

Extrae el valor del campo de control de datos de la celda de la tabla actual y agrega su valor a la colección IDictionary especificada.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
Initialize(Boolean, Control)

Realiza la inicialización de la instancia básica para un campo de control de datos.

InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32)

Agrega texto o controles a la colección de controles de una celda.

LoadViewState(Object)

Restaura la vista del origen de datos tal y como se guardó previamente.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnFieldChanged()

Genera el evento FieldChanged.

SaveViewState()

Guarda los cambios efectuados en el estado de vista de DataControlField desde el momento en que se devolvió la página al servidor.

ToString()

Devuelve una cadena que representa este objeto DataControlField.

TrackViewState()

Hace que el objeto DataControlField lleve un seguimiento de los cambios de su estado de vista, de modo que puedan almacenarse en la propiedad ViewState del control y mantenerse en todas las solicitudes de la misma página.

ValidateSupportsCallback()

Cuando se reemplaza en una clase derivada, indica que los controles contenidos en un campo admiten la devolución de llamada.

Implementaciones de interfaz explícitas

IDataSourceViewSchemaAccessor.DataSourceViewSchema

Obtiene o establece el esquema asociado a este objeto DataControlField.

IStateManager.IsTrackingViewState

Obtiene un valor que indica si el objeto DataControlField está guardando los cambios en su estado de vista.

IStateManager.LoadViewState(Object)

Restaura el estado de vista que se guardó previamente del campo de control de datos.

IStateManager.SaveViewState()

Guarda los cambios efectuados en el estado de vista de DataControlField desde el momento en que se devolvió la página al servidor.

IStateManager.TrackViewState()

Hace que el objeto DataControlField lleve un seguimiento de los cambios de su estado de vista, de modo que puedan almacenarse en la propiedad ViewState del control y mantenerse en todas las solicitudes de la misma página.

Se aplica a

Consulte también