DataControlField Class

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.

Namespace:  System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)

[TypeConverterAttribute(typeof(ExpandableObjectConverter))]
public abstract class DataControlField : IStateManager, 
	IDataSourceViewSchemaAccessor

The DataControlField type exposes the following members.

  NameDescription
Protected methodDataControlFieldInitializes a new instance of the DataControlField class.
Top

  NameDescription
Public propertyAccessibleHeaderTextGets or sets text that is rendered as the AbbreviatedText property value in some controls.
Protected propertyControlGets a reference to the data control that the DataControlField object is associated with.
Public propertyControlStyleGets the style of any Web server controls contained by the DataControlField object.
Protected propertyDesignModeGets a value indicating whether a data control field is currently viewed in a design-time environment.
Public propertyFooterStyleGets or sets the style of the footer of the data control field.
Public propertyFooterTextGets or sets the text that is displayed in the footer item of a data control field.
Public propertyHeaderImageUrlGets or sets the URL of an image that is displayed in the header item of a data control field.
Public propertyHeaderStyleGets or sets the style of the header of the data control field.
Public propertyHeaderTextGets or sets the text that is displayed in the header item of a data control field.
Public propertyInsertVisibleGets a value indicating whether the DataControlField object is visible when its parent data-bound control is in insert mode.
Protected propertyIsTrackingViewStateGets a value indicating whether the DataControlField object is saving changes to its view state.
Public propertyItemStyleGets the style of any text-based content displayed by a data control field.
Public propertyShowHeaderGets or sets a value indicating whether the header item of a data control field is rendered.
Public propertySortExpressionGets or sets a sort expression that is used by a data source control to sort data.
Protected propertyValidateRequestModeGets or sets a value that specifies whether the control validates client input.
Protected propertyViewStateGets 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.
Public propertyVisibleGets or sets a value indicating whether a data control field is rendered.
Top

  NameDescription
Protected methodCloneFieldInfrastructure. Creates a duplicate copy of the current DataControlField-derived object.
Protected methodCopyPropertiesCopies the properties of the current DataControlField-derived object to the specified DataControlField object.
Protected methodCreateFieldWhen overridden in a derived class, creates an empty DataControlField-derived object.
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Public methodExtractValuesFromCellExtracts the value of the data control field from the current table cell and adds the value to the specified IDictionary collection.
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodInitializePerforms basic instance initialization for a data control field.
Public methodInitializeCellAdds text or controls to a cell's controls collection.
Protected methodLoadViewStateRestores the data source view's previously saved view state.
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Protected methodOnFieldChangedRaises the FieldChanged event.
Protected methodSaveViewStateSaves the changes made to the DataControlField view state since the time the page was posted back to the server.
Public methodToStringReturns a string that represents this DataControlField object. (Overrides Object.ToString().)
Protected methodTrackViewStateCauses 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.
Public methodValidateSupportsCallbackWhen overridden in a derived class, signals that the controls contained by a field support callbacks.
Top

  NameDescription
Explicit interface implemetationPrivate propertyIDataSourceViewSchemaAccessor.DataSourceViewSchemaInfrastructure. Gets or sets the schema associated with this DataControlField object.
Explicit interface implemetationPrivate propertyIStateManager.IsTrackingViewStateInfrastructure. Gets a value indicating whether the DataControlField object is saving changes to its view state.
Explicit interface implemetationPrivate methodIStateManager.LoadViewStateInfrastructure. Restores the data control field's previously saved view state.
Explicit interface implemetationPrivate methodIStateManager.SaveViewStateInfrastructure. Saves the changes made to the DataControlField view state since the time the page was posted back to the server.
Explicit interface implemetationPrivate methodIStateManager.TrackViewStateInfrastructure. 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.
Top

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.

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>

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);
    }
  }
}

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>

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft