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