DataControlField Class
Assembly: System.Web (in system.web.dll)
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 |
|---|---|
| Displays the value of a field in a data source as text. | |
| 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. | |
| Displays a check box in a data-bound control. This data control field type is commonly used to display fields with a Boolean value. | |
| Displays built-in command buttons to perform edit, insert, or delete operations in a data-bound control. | |
| 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. | |
| Displays an image in a data-bound control. | |
| 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.
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="VJ#" %>
<html>
<body>
<form runat="server">
<asp:sqldatasource
id="SqlDataSource1"
runat="server"
connectionstring="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
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.
package Samples.AspNet;
import System.*;
import System.Collections.*;
import System.Collections.Specialized.*;
import System.ComponentModel.*;
import System.Web.UI.*;
import System.Web.UI.WebControls.*;
public class RadioButtonField extends CheckBoxField
{
public RadioButtonField()
{
} //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 Object GetDesignTimeValue()
{
return (System.Boolean)false;
} //GetDesignTimeValue
// This method is called by the ExtractRowValues methods on GridView
//and DetailsView. Retrieve
// the current value of the cell from the Checked state of the Radio button.
public void ExtractValuesFromCell(IOrderedDictionary dictionary,
DataControlFieldCell cell, DataControlRowState rowState,
boolean includeReadOnly) throws InvalidOperationException
{
// Does the cell contain a RadioButton in its Controls collection?
if (cell.get_Controls().get_Count() > 0) {
RadioButton radio = (RadioButton)cell.get_Controls().get_Item(0);
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 = (System.Boolean)radio.get_Checked();
}
// Add the value of the Checked attribute of the
// RadioButton to the dictionary.
if (dictionary.Contains(get_DataField())) {
dictionary.set_Item(get_DataField(), checkedValue);
}
else {
dictionary.Add(get_DataField(), checkedValue);
}
}
} //ExtractValuesFromCell
// This method adds a RadioButton control and any other content to the
//cell's Controls collection.
protected 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 (get_DataField().get_Length() != 0) {
radio.add_DataBinding(new EventHandler(this.OnDataBindField));
}
radio.set_Text(this.get_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.set_Enabled(false);
// If the row is in edit mode, enable the button.
if (((int)(rowState & DataControlRowState.Edit) != 0) || ((int)(
rowState & DataControlRowState.Insert) != 0)) {
radio.set_Enabled(true);
}
cell.get_Controls().Add(radio);
} //InitializeDataCell
} //RadioButtonField
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="VJ#" %>
<%@ Register Tagprefix="aspSample"
Namespace="Samples.AspNet"
Assembly="Samples.AspNet.JSL" %>
<html>
<body>
<form 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="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind"
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>
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.