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 |
Возвращает или задает текст, отображаемый |
| 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() |
Вызывает событие |
| SaveViewState() |
Сохраняет изменения, внесенные DataControlField в состояние представления с момента публикации страницы на сервер. |
| ToString() |
Возвращает строку, представляющую этот DataControlField объект. |
| TrackViewState() |
Позволяет DataControlField объекту отслеживать изменения состояния представления, чтобы они могли храниться в свойстве элемента управления ViewState и сохраняться в запросах на одну и ту же страницу. |
| ValidateSupportsCallback() |
При переопределении в производном классе сигнализирует о том, что элементы управления, содержащиеся в поле, поддерживают обратные вызовы. |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| IDataSourceViewSchemaAccessor.DataSourceViewSchema |
Возвращает или задает схему, связанную с этим DataControlField объектом. |
| IStateManager.IsTrackingViewState |
Возвращает значение, указывающее, сохраняет ли DataControlField объект изменения в состоянии представления. |
| IStateManager.LoadViewState(Object) |
Восстанавливает ранее сохраненное состояние представления поля управления данными. |
| IStateManager.SaveViewState() |
Сохраняет изменения, внесенные DataControlField в состояние представления с момента публикации страницы на сервер. |
| IStateManager.TrackViewState() |
Позволяет DataControlField объекту отслеживать изменения состояния представления, чтобы они могли храниться в свойстве элемента управления ViewState и сохраняться в запросах на одну и ту же страницу. |