Бөлісу құралы:


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 управления отображает данные для спортивной команды. Данные игрока сохраняются в таблице данных, которая включает в себя столбец идентификатора, столбцы для имен игроков и истинный или ложный столбец, определяющий капитан команды. Класс 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 Отображает определяемое пользователем содержимое в элементе управления с привязкой к данным в соответствии с указанным шаблоном.

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

Класс DataControlField предоставляет множество свойств, определяющих, как элементы пользовательского интерфейса представлены в элементе управления с привязкой к данным. Не каждый элемент управления использует каждое доступное свойство поля управления данными при отрисовке пользовательского интерфейса. Например, элемент DetailsView управления, который отображает поля элемента управления данными в виде строк, включает элемент заголовка для каждого поля управления данными, но не элемент нижнего колонтитула. Таким образом, FooterTextFooterStyle свойства игнорируются элементом DetailsView управления. Однако элемент GridView управления использует FooterText свойства и FooterStyle свойства, если ShowFooter для свойства задано значение true. Аналогичным образом свойства поля управления данными влияют на представление элементов пользовательского интерфейса в зависимости от того, что такое элемент. Свойство ItemStyle всегда применяется к полю. Если тип, производный от DataControlField элемента управления, как и в ButtonFieldCheckBoxField классах, 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 и сохраняться в запросах на одну и ту же страницу.

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

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