DataControlField Класс

Определение

Служит базовым классом для всех типов полей элемента управления данных, представляющих столбец данных в табличных элементах управления с привязкой к данным, таких как DetailsView и 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
Наследование
DataControlField
Производный
Атрибуты
Реализации

Примеры

В следующем примере кода показано, как использовать BoundField ButtonField объекты и, которые являются производными от DataControlField , для отображения строк в DetailsView элементе управления. DetailsViewЭлемент управления имеет AutoGenerateRows свойство, для которого задано значение false , которое позволяет ему отображать подмножество данных, возвращаемых SelectCommand свойством.

<%@ 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>

В следующем примере кода показано, как расширить BoundField класс, чтобы создать пользовательское привязанное поле, которое можно использовать в GridView элементе управления. Как и CheckBoxField класс, RadioButtonField класс представляет столбец true false данных или. Однако несмотря на то, что данные, к которым CheckBoxField привязан класс, могут быть любым набором true false значений или, набор данных, RadioButtonField к которому привязан класс, может иметь только одно true значение в любой конкретный момент времени. В этом примере показано, как реализовать ExtractValuesFromCell InitializeCell методы и, два важных метода всех классов, производных от 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

В следующем примере кода показано, как использовать RadioButtonField класс, который приведен в предыдущем примере, в GridView элементе управления. В этом примере GridView элемент управления отображает данные для спортивной команды. Данные проигрывателя сохраняются в таблице данных, которая содержит столбец ИДЕНТИФИКАТОРов, столбцы для имен игроков и столбец true или false, определяющий каптаин команды. RadioButtonFieldКласс используется для того, чтобы отобразить, какой член команды является текущей командой каптаин. GridViewЭлемент управления можно изменить, чтобы выбрать новую команду каптаин или изменить другие сведения о проигрывателе.

<%@ 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>

Комментарии

DataControlFieldКласс выступает в качестве базового класса для всех типов полей элементов управления данными. Поля управления данными используются элементами управления с привязкой к данным для представления поля данных аналогично тому, как DataGridColumn объект представляет тип столбца в DataGrid элементе управления.

Используйте классы, производные от, DataControlField для управления отображением поля данных в элементе управления с привязкой к данным, например DetailsView или GridView . В следующей таблице перечислены различные типы полей элементов управления данными, предоставляемые ASP.NET.

Тип поля столбца Описание
BoundField Отображает значение поля в источнике данных в виде текста.
ButtonField Отображает кнопку команды в элементе управления с привязкой к данным. В зависимости от элемента управления это позволяет отображать либо строку, либо столбец с настраиваемым элементом управления "Кнопка", например "Добавить" или "Удалить".
CheckBoxField Отображает флажок в элементе управления с привязкой к данным. Этот тип поля элемента управления данными обычно используется для вывода полей с логическим значением.
CommandField Отображает встроенные командные кнопки для выполнения операций изменения, вставки или удаления в элементе управления с привязкой к данным.
HyperLinkField Отображает значение поля в источнике данных в виде гиперссылки. Этот тип поля элемента управления данными позволяет привязать второе поле к URL-адресу гиперссылки.
ImageField Отображает изображение в элементе управления с привязкой к данным.
TemplateField Отображает определяемое пользователем содержимое в элементе управления с привязкой к данным в соответствии с заданным шаблоном.

Можно также расширить DataControlField BoundField классы и для создания собственных типов полей элементов управления данными.

DataControlFieldКласс предоставляет множество свойств, определяющих, как элементы пользовательского интерфейса представлены в элементе управления с привязкой к данным. Не каждый элемент управления использует каждое доступное свойство поля элемента управления данными при отрисовке пользовательского интерфейса. Например, DetailsView элемент управления, который отображает поля элемента управления данными в виде строк, включает элемент заголовка для каждого поля элемента управления данными, но не имеет элемента нижнего колонтитула. Таким образом, FooterText FooterStyle Свойства и игнорируются DetailsView элементом управления. GridViewОднако элемент управления использует FooterText Свойства и, FooterStyle Если ShowFooter свойство имеет значение true . Аналогично, свойства поля элемента управления данными влияют на представление элементов пользовательского интерфейса в зависимости от того, что имеет элемент. ItemStyleСвойство всегда применяется к полю. Если тип, производный от DataControlField , содержит элемент управления, как ButtonField в CheckBoxField классах или ControlStyle , свойство применяется к полю.

Конструкторы

DataControlField()

Инициализирует новый экземпляр класса DataControlField.

Свойства

AccessibleHeaderText

Возвращает или задает текст, отображающийся как значение свойство AbbreviatedText некоторых элементов управления.

Control

Возвращает ссылку на элемент управления данными, с которым связан объект DataControlField.

ControlStyle

Получает стиль любых серверных веб-элементов управления, содержащихся в объекте DataControlField.

DesignMode

Возвращает значение, указывающее, просматривается ли в данный момент поле элемента управления данными в среде режима разработки.

FooterStyle

Возвращает или задает стиль нижнего колонтитула поля элемента управления данными.

FooterText

Возвращает или задает текст для отображения в нижнем колонтитуле поля элемента управления данными.

HeaderImageUrl

Возвращает или задает URL -адрес изображения для отображения в верхнем колонтитуле поля элемента управления данными.

HeaderStyle

Возвращает или задает стиль верхнего колонтитула поля элемента управления данными.

HeaderText

Возвращает или задает текст для отображения в верхнем колонтитуле поля элемента управления данными.

InsertVisible

Возвращает значение, указывающее состояние отображения объекта DataControlField во время пребывания его родительского элемента управления, привязанного к данным, в режиме вставки.

IsTrackingViewState

Получает значение, указывающее сохраняет ли объект DataControlField изменения в данных о состоянии представления.

ItemStyle

Возвращает стиль любого текстового содержимого, отображаемого полем элемента управления содержанием.

ShowHeader

Возвращает или задает значение, указывающее на необходимость отображения верхнего колонтитула для поля элемента управления данными.

SortExpression

Возвращает или задает выражение сортировки, используемое элементом управления источником данных для сортировки данных.

ValidateRequestMode

Получает или задает значение, указывающее, проверяет ли элемент управления клиентский ввод.

ViewState

Возвращает словарь сведений о состоянии, позволяющих сохранять и восстанавливать состояние представления объекта DataControlField при нескольких запросах одной и той же страницы.

Visible

Возвращает или задает значение, определяющее, отображается ли поле элемента управления данными.

Методы

CloneField()

Создает точную копию текущего объекта, производного от DataControlField.

CopyProperties(DataControlField)

Копирует свойства текущего объекта, производного от DataControlField в указанный объект DataControlField.

CreateField()

При переопределении в производном классе создает пустой объект, производный от DataControlField.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
ExtractValuesFromCell(IOrderedDictionary, DataControlFieldCell, DataControlRowState, Boolean)

Добывает значение поля элемента управления данными из текущей ячейки таблицы и добавляет значение в указанную коллекцию IDictionary.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
Initialize(Boolean, Control)

Производит базовую инициализацию экземпляра для поля элемента управления данными.

InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32)

Добавляет в коллекцию ячейки элемента управления текст или элементы управления.

LoadViewState(Object)

Восстанавливает сохраненное раннее состояние представления источника данных.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
OnFieldChanged()

Вызывает событие FieldChanged.

SaveViewState()

Сохраняет изменения в состояние объекта DataControlField после того, как страница отправлена на сервер.

ToString()

Возврат строки, представляющей объект DataControlField.

TrackViewState()

Инициирует отслеживание объектом DataControlField изменений в состоянии его представления, благодаря чему эти изменения можно сохранить в свойстве элемента ViewState элемента управления и хранить их для всех запросов одной и той же страницы.

ValidateSupportsCallback()

При переопределении в производном классе, сообщает о поддержке ответов элементов управления поля.

Явные реализации интерфейса

IDataSourceViewSchemaAccessor.DataSourceViewSchema

Возвращает или задает схему, связанную с этим объектом DataControlField.

IStateManager.IsTrackingViewState

Получает значение, указывающее сохраняет ли объект DataControlField изменения в данных о состоянии представления.

IStateManager.LoadViewState(Object)

Восстанавливает сохраненное раннее состояние представления поля источника данных.

IStateManager.SaveViewState()

Сохраняет изменения в состояние объекта DataControlField после того, как страница отправлена на сервер.

IStateManager.TrackViewState()

Инициирует отслеживание объектом DataControlField изменений в состоянии его представления, благодаря чему эти изменения можно сохранить в свойстве элемента ViewState элемента управления и хранить их для всех запросов одной и той же страницы.

Применяется к

См. также раздел