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 jsou 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žít 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, která 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 představuje třída RadioButtonField sloupec true nebo false data. I když však data, ke kterým CheckBoxField je třída vázána, mohou být libovolnou sadou true nebo false hodnotami, sada dat, ke kterým 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 GridView prvku. 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 sloupec true nebo false, který identifikuje kapitána týmu. Třída RadioButtonField slouží k zobrazení člena týmu, který je aktuálním kapitánem týmu. Ovládací GridView prvek lze 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ího prvku dat. Pole ovládacích prvků dat jsou používána ovládacími prvky vázanými na data k reprezentaci pole dat, podobně jako DataGridColumn objekt představuje typ sloupce v ovládacím DataGrid prvku.
Pomocí tříd odvozených z DataControlField řízení, jak se pole dat zobrazuje v ovládacím prvku vázaném na data, například DetailsView nebo GridView. Následující tabulka uvádí různé typy polí ovládacího prvku 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, vložení nebo odstraně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 DataControlField třídy 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. Při vykreslování uživatelského rozhraní nepoužívá každý dostupný ovládací prvek vlastnost pole datového ovládacího prvku. 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 DetailsView vlastnosti FooterStyle a vlastnosti. 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 v ButtonField nebo CheckBoxField třídy, ControlStyle vlastnost se použije na pole.
Konstruktory
| Name | Description |
|---|---|
| DataControlField() |
Inicializuje novou instanci DataControlField třídy. |
Vlastnosti
| Name | Description |
|---|---|
| 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 ovládacích prvků webového serveru obsažené objektu DataControlField . |
| DesignMode |
Získá hodnotu označující, zda pole ovládacího prvku dat je 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, který je zobrazen v záhlaví položky pole ovládacího prvku dat. |
| InsertVisible |
Získá hodnotu určující, zda DataControlField objekt je viditelný, když nadřazený ovládací prvek vázané na data je v režimu vložení. |
| IsTrackingViewState |
Získá hodnotu určující, zda DataControlField objekt ukládá změny do jeho 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 zobrazení objektu DataControlField napříč více požadavky na stejnou stránku. |
| Visible |
Získá nebo nastaví hodnotu určující, zda je pole ovládacího prvku dat vykresleno. |
Metody
| Name | Description |
|---|---|
| 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čuje, zda je zadaný objekt roven 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() |
Získá Type aktuální instance. (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á text nebo ovládací prvky do kolekce ovládacích prvků buňky. |
| LoadViewState(Object) |
Obnoví dříve uložený stav zobrazení zdroje dat. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| OnFieldChanged() |
|
| SaveViewState() |
Uloží změny provedené ve DataControlField stavu zobrazení od doby, kdy byla stránka odeslána zpět na server. |
| ToString() |
Vrátí řetězec, který představuje tento DataControlField objekt. |
| TrackViewState() |
Způsobí, že DataControlField objekt bude sledovat změny stavu zobrazení, aby je bylo možné uložit do vlastnosti ovládacího prvku ViewState a zachovat v rámci požadavků na stejnou stránku. |
| ValidateSupportsCallback() |
Při přepsání v odvozené třídě signály, že ovládací prvky obsažené v poli podporují zpětná volání. |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| IDataSourceViewSchemaAccessor.DataSourceViewSchema |
Získá nebo nastaví schéma přidružené k tomuto DataControlField objektu. |
| IStateManager.IsTrackingViewState |
Získá hodnotu určující, zda DataControlField objekt ukládá změny do jeho 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 odeslána zpět na server. |
| IStateManager.TrackViewState() |
Způsobí, že DataControlField objekt bude sledovat změny stavu zobrazení, aby je bylo možné uložit do vlastnosti ovládacího prvku ViewState a zachovat v rámci požadavků na stejnou stránku. |