DataControlField Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Slouží jako základní třída pro všechny typy polí ovládacích prvků dat, které představují sloupec dat v tabulkových ovládacích prvcích vázaných na data, jako DetailsView je například a 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
- Dědičnost
-
DataControlField
- Odvozené
- Atributy
- Implementuje
Příklady
Následující příklad kódu ukazuje, jak používat BoundField a ButtonField objekty, které jsou odvozeny z DataControlField, zobrazit řádky v ovládacím DetailsView prvku. Ovládací DetailsView prvek má vlastnost nastavena AutoGenerateRows na false
, což umožňuje zobrazit podmnožinu dat vrácených SelectCommand vlastností.
<%@ 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>
Následující příklad kódu ukazuje, jak rozšířit BoundField třídu vytvořit vlastní vázané pole, které lze použít v ovládacím GridView prvku. CheckBoxField Podobně jako třída RadioButtonField
představuje třída sloupec true
nebo false
data. Ačkoli data, ke kterým CheckBoxField je třída vázána, mohou být libovolnou množinou true
nebo false
hodnotami, sada dat, na která RadioButtonField
je třída vázána, může mít v daném okamžiku pouze jednu true
hodnotu. Tento příklad ukazuje, jak implementovat ExtractValuesFromCell a InitializeCell metody, dvě důležité metody všech tříd odvozených z 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
Následující příklad kódu ukazuje použití RadioButtonField
třídy, která je uvedena v předchozím příkladu v ovládacím prvku GridView . V tomto příkladu GridView ovládací prvek zobrazí data pro sportovní tým. Data hráče se uchovávají v tabulce dat, která obsahuje sloupec ID, sloupce pro jména hráčů a pravdivý nebo nepravdivý sloupec, který identifikuje kapitána týmu. Třída RadioButtonField
slouží k zobrazení toho, který člen týmu je aktuálním kapitánem týmu. Ovládací GridView prvek můžete upravit a zvolit nového kapitána týmu nebo změnit další informace o hráči.
<%@ 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>
Poznámky
Třída DataControlField slouží jako základní třída pro všechny typy polí ovládacích prvků dat. Ovládací prvky dat používají ovládací prvky vázané na data k reprezentaci pole dat, podobně jako DataGridColumn objekt představuje typ sloupce v ovládacím DataGrid prvku.
Použijte třídy odvozené k DataControlField řízení způsobu zobrazení pole dat v ovládacím prvku vázaném na data, jako je nebo DetailsView GridView. V následující tabulce jsou uvedeny různé typy polí ovládacích prvků dat poskytované ASP.NET.
Typ pole sloupce | Description |
---|---|
BoundField | Zobrazí hodnotu pole ve zdroji dat jako text. |
ButtonField | Zobrazí příkazové tlačítko v ovládacím prvku vázaném na data. V závislosti na ovládacím prvku to umožňuje zobrazit řádek nebo sloupec s vlastním tlačítkem, například přidat nebo odebrat tlačítko. |
CheckBoxField | Zobrazí zaškrtávací políčko v ovládacím prvku vázaném na data. Tento typ pole ovládacího prvku dat se běžně používá k zobrazení polí s logickou hodnotou. |
CommandField | Zobrazí integrovaná příkazová tlačítka pro provádění operací úprav, vkládání nebo odstraňování v ovládacím prvku vázaném na data. |
HyperLinkField | Zobrazí hodnotu pole ve zdroji dat jako hypertextový odkaz. Tento typ pole ovládacího prvku dat umožňuje svázat druhé pole s adresou URL hypertextového odkazu. |
ImageField | Zobrazí obrázek v ovládacím prvku vázaném na data. |
TemplateField | Zobrazí uživatelem definovaný obsah v ovládacím prvku vázaném na data podle zadané šablony. |
Můžete také rozšířit třídy DataControlField a BoundField vytvořit vlastní typy polí ovládacího prvku dat.
Třída DataControlField poskytuje mnoho vlastností, které určují, jak jsou prvky uživatelského rozhraní prezentovány v ovládacím prvku vázaném na data. Ne každý ovládací prvek používá při vykreslování uživatelského rozhraní vlastnost každého dostupného pole ovládacího prvku dat. Například DetailsView ovládací prvek, který zobrazuje pole ovládacího prvku dat jako řádky, obsahuje položku záhlaví pro každé pole ovládacího prvku dat, ale žádná položka zápatí. FooterText Proto ovládací prvek ignoruje vlastnosti a FooterStyle vlastnostiDetailsView. Ovládací GridView prvek však používá FooterText a FooterStyle vlastnosti, pokud ShowFooter je vlastnost nastavena na true
. Podobně vlastnosti pole ovládacího prvku dat ovlivňují prezentaci prvků uživatelského rozhraní v závislosti na tom, co je prvek. Vlastnost ItemStyle se vždy použije u pole. Pokud typ odvozený z DataControlField obsahuje ovládací prvek, jako ve třídách CheckBoxField ButtonField, ControlStyle vlastnost se použije na pole.
Konstruktory
DataControlField() |
Inicializuje novou instanci DataControlField třídy. |
Vlastnosti
AccessibleHeaderText |
Získá nebo nastaví text, který je vykreslen jako |
Control |
Získá odkaz na ovládací prvek dat, ke kterému DataControlField je objekt přidružen. |
ControlStyle |
Získá styl všech webových server ovládacích prvků obsažených objektem DataControlField . |
DesignMode |
Získá hodnotu označující, zda je pole ovládacího prvku dat aktuálně zobrazeno v návrhovém prostředí. |
FooterStyle |
Získá nebo nastaví styl zápatí pole ovládacího prvku dat. |
FooterText |
Získá nebo nastaví text, který je zobrazen v zápatí položky pole ovládacího prvku dat. |
HeaderImageUrl |
Získá nebo nastaví adresu URL obrázku, který se zobrazí v položce záhlaví pole ovládacího prvku dat. |
HeaderStyle |
Získá nebo nastaví styl záhlaví pole ovládacího prvku dat. |
HeaderText |
Získá nebo nastaví text zobrazený v položce záhlaví pole ovládacího prvku dat. |
InsertVisible |
Získá hodnotu označující, zda DataControlField je objekt viditelný, když je nadřazený ovládací prvek vázané na data v režimu vložení. |
IsTrackingViewState |
Získá hodnotu určující, zda DataControlField objekt ukládá změny do stavu zobrazení. |
ItemStyle |
Získá styl libovolného textového obsahu zobrazeného polem ovládacího prvku dat. |
ShowHeader |
Získá nebo nastaví hodnotu určující, zda je položka záhlaví pole ovládacího prvku dat vykreslena. |
SortExpression |
Získá nebo nastaví výraz řazení, který používá ovládací prvek zdroje dat k řazení dat. |
ValidateRequestMode |
Získá nebo nastaví hodnotu, která určuje, zda ovládací prvek ověřuje vstup klienta. |
ViewState |
Získá slovník informací o stavu, který umožňuje uložit a obnovit stav DataControlField zobrazení objektu napříč více požadavky na stejnou stránku. |
Visible |
Získá nebo nastaví hodnotu označující, zda je pole ovládacího prvku dat vykresleno. |
Metody
CloneField() |
Vytvoří duplicitní kopii aktuálního DataControlFieldodvozeného objektu. |
CopyProperties(DataControlField) |
Zkopíruje vlastnosti aktuálního DataControlField-odvozeného objektu do zadaného DataControlField objektu. |
CreateField() |
Při přepsání v odvozené třídě vytvoří prázdný DataControlField-odvozený objekt. |
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
ExtractValuesFromCell(IOrderedDictionary, DataControlFieldCell, DataControlRowState, Boolean) |
Extrahuje hodnotu pole ovládacího prvku dat z aktuální buňky tabulky a přidá hodnotu do zadané IDictionary kolekce. |
GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
GetType() |
Type Získá aktuální instanci. (Zděděno od Object) |
Initialize(Boolean, Control) |
Provede základní inicializaci instance pro pole ovládacího prvku dat. |
InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32) |
Přidá do kolekce ovládacích prvků buňky text nebo ovládací prvky. |
LoadViewState(Object) |
Obnoví dříve uložený stav zobrazení zdroje dat. |
MemberwiseClone() |
Vytvoří použádnou kopii aktuálního souboru Object. (Zděděno od Object) |
OnFieldChanged() |
Vyvolá |
SaveViewState() |
Uloží změny provedené ve DataControlField stavu zobrazení od doby, kdy byla stránka publikována zpět na server. |
ToString() |
Vrátí řetězec, který představuje tento DataControlField objekt. |
TrackViewState() |
Způsobí, DataControlField že objekt bude sledovat změny ve stavu zobrazení, aby je bylo možné uložit do vlastnosti ovládacího prvku ViewState a zachovat napříč požadavky na stejnou stránku. |
ValidateSupportsCallback() |
Při přepsání v odvozené třídě signalizuje, že ovládací prvky obsažené v poli podporují zpětné volání. |
Explicitní implementace rozhraní
IDataSourceViewSchemaAccessor.DataSourceViewSchema |
Získá nebo nastaví schéma přidružené k tomuto DataControlField objektu. |
IStateManager.IsTrackingViewState |
Získá hodnotu označující, zda DataControlField objekt ukládá změny do stavu zobrazení. |
IStateManager.LoadViewState(Object) |
Obnoví dříve uložený stav zobrazení pole ovládacího prvku dat. |
IStateManager.SaveViewState() |
Uloží změny provedené ve DataControlField stavu zobrazení od doby, kdy byla stránka publikována zpět na server. |
IStateManager.TrackViewState() |
Způsobí, DataControlField že objekt bude sledovat změny ve stavu zobrazení, aby je bylo možné uložit do vlastnosti ovládacího prvku ViewState a zachovat napříč požadavky na stejnou stránku. |