DataControlField Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Serves as the base class for all data control field types, which represent a column of data in tabular data-bound controls such as DetailsView and 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
- Inheritance
-
DataControlField
- Derived
- Attributes
- Implements
Examples
The following code example demonstrates how to use BoundField and ButtonField objects, which are derived from DataControlField, to display rows in a DetailsView control. The DetailsView control has the AutoGenerateRows property set to false
, which enables it to display a subset of the data returned by the SelectCommand property.
<%@ 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>
The following code example demonstrates how to extend the BoundField class to create a custom bound field that can be used in a GridView control. Similar to the CheckBoxField class, the RadioButtonField
class represents a column of true
or false
data. However, although the data that the CheckBoxField class is bound to can be any set of true
or false
values, the set of data that the RadioButtonField
class is bound to can have only one true
value at any given time. This example demonstrates how to implement the ExtractValuesFromCell and InitializeCell methods, two important methods of all classes derived from 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
The following code example demonstrates how to use the RadioButtonField
class, which is provided in the previous example, in a GridView control. In this example, the GridView control displays data for a sports team. The player data is maintained in a data table that includes an ID column, columns for the player names, and a true or false column that identifies the captain of the team. The RadioButtonField
class is used to display which team member is the current team captain. The GridView control can be edited to choose a new team captain or to change other player information.
<%@ 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>
Remarks
The DataControlField class serves as the base class for all data control field types. Data control fields are used by data-bound controls to represent a field of data, similar to how a DataGridColumn object represents a type of column in the DataGrid control.
Use the classes that are derived from DataControlField to control how a field of data is displayed in a data-bound control such as DetailsView or GridView. The following table lists the different data control field types provided by ASP.NET.
Column field type | Description |
---|---|
BoundField | Displays the value of a field in a data source as text. |
ButtonField | Displays a command button in a data-bound control. Depending on the control, this allows you to display either a row or a column with a custom button control, such as an Add or a Remove button. |
CheckBoxField | Displays a check box in a data-bound control. This data control field type is commonly used to display fields with a Boolean value. |
CommandField | Displays built-in command buttons to perform edit, insert, or delete operations in a data-bound control. |
HyperLinkField | Displays the value of a field in a data source as a hyperlink. This data control field type allows you to bind a second field to the hyperlink's URL. |
ImageField | Displays an image in a data-bound control. |
TemplateField | Displays user-defined content in a data-bound control according to a specified template. |
You can also extend the DataControlField and BoundField classes to create your own data control field types.
The DataControlField class provides many properties that determine how user interface (UI) elements are presented in the data-bound control. Not every control uses every available data control field property when rendering a UI. For example, the DetailsView control, which displays the data control fields as rows, includes a header item for each data control field, but no footer item. Therefore, the FooterText and FooterStyle properties are ignored by the DetailsView control. The GridView control, however, uses the FooterText and FooterStyle properties if the ShowFooter property is set to true
. Similarly, the data control field properties affect the presentation of UI elements depending on what the element is. The ItemStyle property is always applied to the field. If the type derived from DataControlField contains a control, as in the ButtonField or CheckBoxField classes, the ControlStyle property is applied to the field.
Constructors
DataControlField() |
Initializes a new instance of the DataControlField class. |
Properties
AccessibleHeaderText |
Gets or sets text that is rendered as the |
Control |
Gets a reference to the data control that the DataControlField object is associated with. |
ControlStyle |
Gets the style of any Web server controls contained by the DataControlField object. |
DesignMode |
Gets a value indicating whether a data control field is currently viewed in a design-time environment. |
FooterStyle |
Gets or sets the style of the footer of the data control field. |
FooterText |
Gets or sets the text that is displayed in the footer item of a data control field. |
HeaderImageUrl |
Gets or sets the URL of an image that is displayed in the header item of a data control field. |
HeaderStyle |
Gets or sets the style of the header of the data control field. |
HeaderText |
Gets or sets the text that is displayed in the header item of a data control field. |
InsertVisible |
Gets a value indicating whether the DataControlField object is visible when its parent data-bound control is in insert mode. |
IsTrackingViewState |
Gets a value indicating whether the DataControlField object is saving changes to its view state. |
ItemStyle |
Gets the style of any text-based content displayed by a data control field. |
ShowHeader |
Gets or sets a value indicating whether the header item of a data control field is rendered. |
SortExpression |
Gets or sets a sort expression that is used by a data source control to sort data. |
ValidateRequestMode |
Gets or sets a value that specifies whether the control validates client input. |
ViewState |
Gets a dictionary of state information that allows you to save and restore the view state of a DataControlField object across multiple requests for the same page. |
Visible |
Gets or sets a value indicating whether a data control field is rendered. |
Methods
CloneField() |
Creates a duplicate copy of the current DataControlField-derived object. |
CopyProperties(DataControlField) |
Copies the properties of the current DataControlField-derived object to the specified DataControlField object. |
CreateField() |
When overridden in a derived class, creates an empty DataControlField-derived object. |
Equals(Object) |
Determines whether the specified object is equal to the current object. (Inherited from Object) |
ExtractValuesFromCell(IOrderedDictionary, DataControlFieldCell, DataControlRowState, Boolean) |
Extracts the value of the data control field from the current table cell and adds the value to the specified IDictionary collection. |
GetHashCode() |
Serves as the default hash function. (Inherited from Object) |
GetType() |
Gets the Type of the current instance. (Inherited from Object) |
Initialize(Boolean, Control) |
Performs basic instance initialization for a data control field. |
InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32) |
Adds text or controls to a cell's controls collection. |
LoadViewState(Object) |
Restores the data source view's previously saved view state. |
MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
OnFieldChanged() |
Raises the |
SaveViewState() |
Saves the changes made to the DataControlField view state since the time the page was posted back to the server. |
ToString() |
Returns a string that represents this DataControlField object. |
TrackViewState() |
Causes the DataControlField object to track changes to its view state so they can be stored in the control's ViewState property and persisted across requests for the same page. |
ValidateSupportsCallback() |
When overridden in a derived class, signals that the controls contained by a field support callbacks. |
Explicit Interface Implementations
IDataSourceViewSchemaAccessor.DataSourceViewSchema |
Gets or sets the schema associated with this DataControlField object. |
IStateManager.IsTrackingViewState |
Gets a value indicating whether the DataControlField object is saving changes to its view state. |
IStateManager.LoadViewState(Object) |
Restores the data control field's previously saved view state. |
IStateManager.SaveViewState() |
Saves the changes made to the DataControlField view state since the time the page was posted back to the server. |
IStateManager.TrackViewState() |
Causes the DataControlField object to track changes to its view state so they can be stored in the control's ViewState property and persisted across requests for the same page. |