DataControlField Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Funge da classe base per tutti i tipi di campo di controllo dati, che rappresentano una colonna di dati nei controlli associati a dati tabulari, come DetailsView e 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
- Ereditarietà
-
DataControlField
- Derivato
- Attributi
- Implementazioni
Esempio
Nell'esempio di codice seguente viene illustrato come usare BoundField gli oggetti e ButtonField , derivati da DataControlField, per visualizzare righe in un DetailsView controllo . Il DetailsView controllo ha la AutoGenerateRows proprietà impostata su false
, che consente di visualizzare un subset dei dati restituiti dalla SelectCommand proprietà .
<%@ 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>
Nell'esempio di codice seguente viene illustrato come estendere la BoundField classe per creare un campo associato personalizzato che può essere usato in un GridView controllo . Analogamente alla CheckBoxField classe , la RadioButtonField
classe rappresenta una colonna di true
dati o false
. Tuttavia, anche se i dati a cui è associata la CheckBoxField classe possono essere qualsiasi set di true
valori o false
, il set di dati a cui è associata la RadioButtonField
classe può avere un true
solo valore in qualsiasi momento. In questo esempio viene illustrato come implementare i ExtractValuesFromCell metodi e InitializeCell , due metodi importanti di tutte le classi derivate da 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
Nell'esempio di codice seguente viene illustrato come usare la RadioButtonField
classe , fornita nell'esempio precedente, in un GridView controllo . In questo esempio, il GridView controllo visualizza i dati per una squadra sportiva. I dati del giocatore vengono mantenuti in una tabella dati che include una colonna ID, colonne per i nomi dei giocatori e una colonna true o false che identifica il capitano della squadra. La RadioButtonField
classe viene usata per visualizzare quale membro del team è il capitano della squadra corrente. Il GridView controllo può essere modificato per scegliere un nuovo capitano della squadra o per modificare altre informazioni sul giocatore.
<%@ 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>
Commenti
La DataControlField classe funge da classe base per tutti i tipi di campo di controllo dati. I campi di controllo dati vengono utilizzati dai controlli associati a dati per rappresentare un campo di dati, in modo analogo a come un DataGridColumn oggetto rappresenta un tipo di colonna nel DataGrid controllo .
Usare le classi derivate da DataControlField per controllare la modalità di visualizzazione di un campo di dati in un controllo associato a dati, DetailsView ad esempio o GridView. Nella tabella seguente sono elencati i diversi tipi di campo di controllo dati forniti da ASP.NET.
Tipo di campo colonna | Descrizione |
---|---|
BoundField | Visualizza il valore di un campo in un'origine dati come testo. |
ButtonField | Visualizza un pulsante di comando in un controllo associato a dati. A seconda del controllo, ciò consente di visualizzare una riga o una colonna con un controllo pulsante personalizzato, ad esempio un pulsante Aggiungi o Rimuovi. |
CheckBoxField | Visualizza una casella di controllo in un controllo associato a dati. Questo tipo di campo di controllo dati viene comunemente usato per visualizzare i campi con un valore booleano. |
CommandField | Visualizza i pulsanti di comando predefiniti per eseguire operazioni di modifica, inserimento o eliminazione in un controllo associato a dati. |
HyperLinkField | Visualizza il valore di un campo in un'origine dati come collegamento ipertestuale. Questo tipo di campo di controllo dati consente di associare un secondo campo all'URL del collegamento ipertestuale. |
ImageField | Visualizza un'immagine in un controllo associato a dati. |
TemplateField | Visualizza il contenuto definito dall'utente in un controllo associato a dati in base a un modello specificato. |
È anche possibile estendere le DataControlField classi e BoundField per creare tipi di campo di controllo dati personalizzati.
La DataControlField classe fornisce molte proprietà che determinano la modalità di presentazione degli elementi dell'interfaccia utente nel controllo associato a dati. Non tutti i controlli usano ogni proprietà del campo di controllo dati disponibile durante il rendering di un'interfaccia utente. Ad esempio, il DetailsView controllo , che visualizza i campi del controllo dati come righe, include un elemento di intestazione per ogni campo del controllo dati, ma nessun elemento piè di pagina. Di conseguenza, le FooterText proprietà e FooterStyle vengono ignorate dal DetailsView controllo . Il GridView controllo usa tuttavia le FooterText proprietà e FooterStyle se la ShowFooter proprietà è impostata su true
. Analogamente, le proprietà del campo del controllo dati influiscono sulla presentazione degli elementi dell'interfaccia utente a seconda dell'elemento. La ItemStyle proprietà viene sempre applicata al campo. Se il tipo derivato da DataControlField contiene un controllo , come nelle ButtonField classi o CheckBoxField , la ControlStyle proprietà viene applicata al campo .
Costruttori
DataControlField() |
Inizializza una nuova istanza della classe DataControlField. |
Proprietà
AccessibleHeaderText |
Ottiene o imposta il testo che viene sottoposto a rendering come valore della proprietà |
Control |
Ottiene un riferimento al controllo dati a cui l'oggetto DataControlField è associato. |
ControlStyle |
Ottiene lo stile di tutti i controlli server Web contenuti nell'oggetto DataControlField. |
DesignMode |
Ottiene un valore che indica se un campo di controllo dati è attualmente visualizzato in un ambiente di progettazione. |
FooterStyle |
Ottiene o imposta lo stile del piè di pagina del campo di controllo dati. |
FooterText |
Ottiene o imposta il testo visualizzato nell'elemento del piè di pagina del campo di controllo dati. |
HeaderImageUrl |
Ottiene o imposta l'URL di un'immagine che viene visualizzata nell'elemento di intestazione di un campo di controlli dati. |
HeaderStyle |
Ottiene o imposta lo stile dell'intestazione del campo di controllo dati. |
HeaderText |
Ottiene o imposta il testo visualizzato nell'elemento dell'intestazione di un campo di controllo dati. |
InsertVisible |
Ottiene un valore che indica se l'oggetto DataControlField è visibile quando il controllo con associazione a dati padre si trova in modalità di inserimento. |
IsTrackingViewState |
Ottiene un valore che indica se l'oggetto DataControlField sta salvando le modifiche apportate al relativo stato di visualizzazione. |
ItemStyle |
Ottiene lo stile di tutti i contenuti basati sul testo visualizzati da un campo di controllo dati. |
ShowHeader |
Ottiene o imposta un valore che indica se viene eseguito il rendering dell'elemento di intestazione di un campo di controllo dati. |
SortExpression |
Ottiene o imposta l'espressione di ordinamento che viene utilizzata da un controllo origine dati per ordinare i dati. |
ValidateRequestMode |
Ottiene o imposta un valore che specifica se il controllo convalida l'input del client. |
ViewState |
Ottiene un dizionario di informazioni sullo stato che consente di salvare e ripristinare lo stato di visualizzazione di un oggetto DataControlField tra più richieste per la stessa pagina. |
Visible |
Ottiene o imposta un valore che indica se viene eseguito il rendering di un campo di controllo dati. |
Metodi
CloneField() |
Crea una copia duplicata dell'oggetto corrente derivato da DataControlField. |
CopyProperties(DataControlField) |
Copia le proprietà dell'oggetto corrente derivato da DataControlField nell'oggetto DataControlField specificato. |
CreateField() |
Quando viene sottoposto a override in una classe derivata, crea un oggetto vuoto derivato da DataControlField. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
ExtractValuesFromCell(IOrderedDictionary, DataControlFieldCell, DataControlRowState, Boolean) |
Estrae il valore del campo di controllo dati dalla cella corrente della tabella e aggiunge il valore all'insieme IDictionary specificato. |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
Initialize(Boolean, Control) |
Esegue un'inizializzazione dell'istanza di base per un campo di controllo dati. |
InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32) |
Aggiunge testo o controlli all'insieme dei controlli di una cella. |
LoadViewState(Object) |
Ripristina lo stato di visualizzazione precedentemente salvato della visualizzazione origine dati. |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
OnFieldChanged() |
Genera l'evento |
SaveViewState() |
Salva le modifiche apportate allo stato di visualizzazione DataControlField dal momento in cui è stato eseguito il postback della pagina al server. |
ToString() |
Restituisce una stringa che rappresenta questo oggetto DataControlField. |
TrackViewState() |
Mediante questo metodo l'oggetto DataControlField tiene traccia delle modifiche apportate al relativo stato di visualizzazione in modo che possano essere memorizzate nella proprietà ViewState del controllo e mantenute nelle richieste della stessa pagina. |
ValidateSupportsCallback() |
Quando si esegue l'override in una classe derivata, segnala che i controlli contenuti in un campo supportano i callback. |
Implementazioni dell'interfaccia esplicita
IDataSourceViewSchemaAccessor.DataSourceViewSchema |
Ottiene o imposta lo schema associato all'oggetto DataControlField. |
IStateManager.IsTrackingViewState |
Ottiene un valore che indica se l'oggetto DataControlField sta salvando le modifiche apportate al relativo stato di visualizzazione. |
IStateManager.LoadViewState(Object) |
Ripristina lo stato di visualizzazione del campo del controllo dati salvato in precedenza. |
IStateManager.SaveViewState() |
Salva le modifiche apportate allo stato di visualizzazione DataControlField dal momento in cui è stato eseguito il postback della pagina al server. |
IStateManager.TrackViewState() |
Mediante questo metodo l'oggetto DataControlField tiene traccia delle modifiche apportate al relativo stato di visualizzazione in modo che possano essere memorizzate nella proprietà ViewState del controllo e mantenute nelle richieste della stessa pagina. |