DataControlField Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 false
en , 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 true
en . 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 |
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 |
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. |