Export (0) Print
Expand All

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
/** @attribute TypeConverterAttribute(System.ComponentModel.ExpandableObjectConverter) */ 
public abstract class DataControlField implements IStateManager, IDataSourceViewSchemaAccessor
TypeConverterAttribute(System.ComponentModel.ExpandableObjectConverter) 
public abstract class DataControlField implements IStateManager, IDataSourceViewSchemaAccessor
Not applicable.

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>

<%@ page language="VJ#" %>
<!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="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.

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

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="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="VJ#" %>
<%@ Register Tagprefix="aspSample"
             Namespace="Samples.AspNet"
             Assembly="Samples.AspNet.JSL" %>

<!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="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>

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 98, Windows Server 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0

Community Additions

ADD
Show:
© 2014 Microsoft