DataControlField Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Sert de classe de base pour tous les types de champs de contrôles de données, qui représentent une colonne de données dans les contrôles liés aux données sous forme de tableau comme DetailsView et 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
- Héritage
-
DataControlField
- Dérivé
- Attributs
- Implémente
Exemples
L’exemple de code suivant montre comment utiliser BoundField et utiliser des ButtonField objets dérivés de DataControlField, pour afficher des lignes dans un DetailsView contrôle. Le DetailsView contrôle a la AutoGenerateRows propriété définie false
sur , ce qui lui permet d’afficher un sous-ensemble des données retournées par la SelectCommand propriété.
<%@ 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>
L’exemple de code suivant montre comment étendre la BoundField classe pour créer un champ lié personnalisé qui peut être utilisé dans un GridView contrôle. Semblable à la CheckBoxField classe, la RadioButtonField
classe représente une colonne de données ou false
une true
colonne. Toutefois, même si les données auxquelles la CheckBoxField classe est liée peuvent être n’importe quel ensemble ou false
true
valeur, le jeu de données auquel la RadioButtonField
classe est liée ne peut avoir qu’une true
seule valeur à un moment donné. Cet exemple montre comment implémenter les méthodes et InitializeCell les ExtractValuesFromCell méthodes, deux méthodes importantes de toutes les classes dérivées de 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
L’exemple de code suivant montre comment utiliser la RadioButtonField
classe, fournie dans l’exemple précédent, dans un GridView contrôle. Dans cet exemple, le GridView contrôle affiche les données d’une équipe sportive. Les données du joueur sont conservées dans une table de données qui inclut une colonne d’ID, des colonnes pour les noms des joueurs et une colonne true ou false qui identifie le capitaine de l’équipe. La RadioButtonField
classe est utilisée pour afficher le membre de l’équipe qui est le capitaine actuel de l’équipe. Le GridView contrôle peut être modifié pour choisir un nouveau capitaine d’équipe ou modifier d’autres informations sur les joueurs.
<%@ 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>
Remarques
La DataControlField classe sert de classe de base pour tous les types de champs de contrôle de données. Les champs de contrôle de données sont utilisés par des contrôles liés aux données pour représenter un champ de données, de la même façon qu’un DataGridColumn objet représente un type de colonne dans le DataGrid contrôle.
Utilisez les classes dérivées pour DataControlField contrôler l’affichage d’un champ de données dans un contrôle lié aux données tel que DetailsView ou GridView. Le tableau suivant répertorie les différents types de champs de contrôle de données fournis par ASP.NET.
Type de champ de colonne | Description |
---|---|
BoundField | Affiche la valeur d’un champ dans une source de données sous forme de texte. |
ButtonField | Affiche un bouton de commande dans un contrôle lié aux données. Selon le contrôle, cela vous permet d’afficher une ligne ou une colonne avec un contrôle bouton personnalisé, tel qu’un bouton Ajouter ou Supprimer. |
CheckBoxField | Affiche une case à cocher dans un contrôle lié aux données. Ce type de champ de contrôle de données est couramment utilisé pour afficher des champs avec une valeur booléenne. |
CommandField | Affiche des boutons de commande intégrés pour effectuer des opérations de modification, d’insertion ou de suppression dans un contrôle lié aux données. |
HyperLinkField | Affiche la valeur d’un champ dans une source de données sous forme de lien hypertexte. Ce type de champ de contrôle de données vous permet de lier un deuxième champ à l’URL du lien hypertexte. |
ImageField | Affiche une image dans un contrôle lié aux données. |
TemplateField | Affiche le contenu défini par l’utilisateur dans un contrôle lié aux données en fonction d’un modèle spécifié. |
Vous pouvez également étendre les classes et BoundField les DataControlField étendre pour créer vos propres types de champs de contrôle de données.
La DataControlField classe fournit de nombreuses propriétés qui déterminent la façon dont les éléments de l’interface utilisateur sont présentés dans le contrôle lié aux données. Tous les contrôles n’utilisent pas toutes les propriétés de champ de contrôle de données disponibles lors du rendu d’une interface utilisateur. Par exemple, le DetailsView contrôle, qui affiche les champs de contrôle de données sous forme de lignes, inclut un élément d’en-tête pour chaque champ de contrôle de données, mais aucun élément de pied de page. Par conséquent, les propriétés et FooterStyle les FooterText propriétés sont ignorées par le DetailsView contrôle. Toutefois, le GridView contrôle utilise les propriétés et FooterStyle les FooterText propriétés si la ShowFooter propriété est définie true
sur . De même, les propriétés du champ de contrôle de données affectent la présentation des éléments d’interface utilisateur en fonction de l’élément. La ItemStyle propriété est toujours appliquée au champ. Si le type dérivé de DataControlField contient un contrôle, comme dans le ou CheckBoxField les ButtonField classes, la ControlStyle propriété est appliquée au champ.
Constructeurs
DataControlField() |
Initialise une nouvelle instance de la classe DataControlField. |
Propriétés
AccessibleHeaderText |
Obtient ou définit le texte restitué sous forme de valeur de propriété |
Control |
Obtient une référence au contrôle de données auquel l'objet DataControlField est associé. |
ControlStyle |
Obtient le style de tout contrôle serveur Web contenu dans l'objet DataControlField. |
DesignMode |
Obtient une valeur indiquant si un champ de contrôle de données est actuellement affiché dans un environnement au moment du design. |
FooterStyle |
Obtient ou définit le style du pied de page du champ de contrôle de données. |
FooterText |
Obtient ou définit le texte affiché dans l'élément de pied de page d'un champ de contrôle de données. |
HeaderImageUrl |
Obtient ou définit l'URL d'une image affichée dans l'élément d'en-tête d'un champ de contrôle de données. |
HeaderStyle |
Obtient ou définit le style de l'en-tête du champ de contrôle de données. |
HeaderText |
Obtient ou définit le texte affiché dans l'élément d'en-tête d'un champ de contrôle de données. |
InsertVisible |
Obtient une valeur indiquant si l'objet DataControlField est visible lorsque son contrôle lié aux données parent est en mode insertion. |
IsTrackingViewState |
Obtient une valeur indiquant si l'objet DataControlField enregistre les modifications apportées à son état d'affichage. |
ItemStyle |
Obtient le style de tout contenu de type texte affiché dans un champ de contrôle de données. |
ShowHeader |
Obtient ou définit une valeur indiquant si l'élément d'en-tête d'un champ de contrôle de données est restitué. |
SortExpression |
Obtient ou définit une expression de tri utilisée par un contrôle de source de données pour trier des données. |
ValidateRequestMode |
Obtient ou définit une valeur qui spécifie si le contrôle valide l'entrée du client. |
ViewState |
Obtient un dictionnaire d'informations d'état qui vous permet d'enregistrer et de restaurer l'état d'affichage d'un objet DataControlField entre plusieurs demandes de la même page. |
Visible |
Obtient ou définit une valeur indiquant si un champ de contrôle de données est restitué. |
Méthodes
CloneField() |
Crée une copie de l'objet dérivé de DataControlField en cours. |
CopyProperties(DataControlField) |
Copie les propriétés de l'objet dérivé de DataControlField actuel vers l'objet DataControlField spécifié. |
CreateField() |
En cas de substitution dans une classe dérivée, crée un objet dérivé de DataControlField vide. |
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
ExtractValuesFromCell(IOrderedDictionary, DataControlFieldCell, DataControlRowState, Boolean) |
Extrait la valeur du champ de contrôle de données à partir de la cellule active du tableau et ajoute la valeur à la collection IDictionary spécifiée. |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
Initialize(Boolean, Control) |
Effectue l'initialisation d'instance de base pour un champ de contrôle de données. |
InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32) |
Ajoute du texte ou des contrôles à la collection de contrôles d'une cellule. |
LoadViewState(Object) |
Restaure l'état d'affichage enregistré précédemment pour la vue de source de données. |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
OnFieldChanged() |
Déclenche l’événement |
SaveViewState() |
Enregistre les modifications apportées à l'état d'affichage DataControlField depuis la publication de la page sur le serveur. |
ToString() |
Retourne une chaîne qui représente cet objet DataControlField. |
TrackViewState() |
Ainsi, l'objet DataControlField effectue le suivi des modifications de son état d'affichage afin qu'elles puissent être stockées dans la propriété ViewState du contrôle et être persistantes entre les demandes de la même page. |
ValidateSupportsCallback() |
En cas de substitution dans une classe dérivée, signale que les contrôles contenus dans un champ prennent en charge des rappels. |
Implémentations d’interfaces explicites
IDataSourceViewSchemaAccessor.DataSourceViewSchema |
Obtient ou définit le schéma associé à cet objet DataControlField. |
IStateManager.IsTrackingViewState |
Obtient une valeur indiquant si l'objet DataControlField enregistre les modifications apportées à son état d'affichage. |
IStateManager.LoadViewState(Object) |
Restaure l'état d'affichage enregistré précédemment pour le champ de contrôle de données. |
IStateManager.SaveViewState() |
Enregistre les modifications apportées à l'état d'affichage DataControlField depuis la publication de la page sur le serveur. |
IStateManager.TrackViewState() |
Ainsi, l'objet DataControlField effectue le suivi des modifications de son état d'affichage afin qu'elles puissent être stockées dans la propriété ViewState du contrôle et être persistantes entre les demandes de la même page. |