Partager via


DataControlField Classe

Définition

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 falsesur , 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 truesur . 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é AbbreviatedText dans certains contrôles.

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 FieldChanged.

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.

S’applique à

Voir aussi