Exporter (0) Imprimer
Développer tout

DataControlField, classe

Remarque : cette classe est nouvelle dans le .NET Framework version 2.0.

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.

Espace de noms : System.Web.UI.WebControls
Assembly : System.Web (dans system.web.dll)

public abstract class DataControlField : IStateManager, IDataSourceViewSchemaAccessor
public abstract class DataControlField implements IStateManager, IDataSourceViewSchemaAccessor
public abstract class DataControlField implements IStateManager, IDataSourceViewSchemaAccessor

La classe DataControlField sert de classe de base pour tous les types de champs de contrôles de données. Les champs de contrôle de données sont utilisés par les contrôles liés aux données pour représenter un champ de données, semblable à la façon dont un objet DataGridColumn représente un type de colonne dans le contrôle DataGrid.

Utilisez les classes dérivées de DataControlField pour 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ôles 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 la forme de texte.

ButtonField

Affiche un bouton de commande dans un contrôle lié aux données. Vous pouvez ainsi afficher selon le contrôle 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 les champs avec une valeur Boolean.

CommandField

Affiche des boutons de commande intégrés pour exécuter 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 la 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 DataControlField et BoundField pour créer vos propres types de champs de contrôles de données.

La classe DataControlField fournit plusieurs propriétés qui déterminent la présentation des éléments d'interface utilisateur 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 contrôle DetailsView qui affiche les champs de contrôle de données comme 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 FooterText et FooterStyle sont ignorées par le contrôle DetailsView. Toutefois, le contrôle GridView utilise les propriétés FooterText et FooterStyle si la propriété ShowFooter a la valeur true. De la même façon, les propriétés de champ de contrôle de données affectent la présentation d'éléments de l'interface utilisateur en fonction de l'élément. La propriété ItemStyle est toujours appliquée au champ. Si le type dérivé de DataControlField contient un contrôle, comme dans les classes ButtonField ou CheckBoxField, la propriété ControlStyle est appliquée au champ.

L'exemple de code suivant illustre l'utilisation des objets BoundField et ButtonField dérivés de DataControlField, pour afficher des lignes dans un contrôle DetailsView. La propriété AutoGenerateRows du contrôle DetailsView a la valeur false, ce qui lui permet d'afficher un sous-ensemble des données retournées par la propriété SelectCommand.

<%@ page language="C#" %>
<html>
<body>
  <form 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="VJ#" %>
<html>
<body>
  <form runat="server">

    <asp:sqldatasource
      id="SqlDataSource1"
      runat="server"
      connectionstring="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
      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 illustre l'extension de la classe BoundField pour créer un champ dépendant personnalisé qui peut être utilisé dans un contrôle GridView. De même que la classe CheckBoxField, la classe RadioButtonField représente une colonne de données true ou false. Toutefois, bien que les données auxquelles la classe CheckBoxField est liée puissent avoir la valeur true ou false, le groupe de données auquel la classe RadioButtonField est liée peut seulement avoir la valeur true à un moment donné. Cet exemple illustre l'implémentation des méthodes ExtractValuesFromCell et InitializeCell, 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);
    }
  }
}

package Samples.AspNet; 

import System.*;
import System.Collections.*;
import System.Collections.Specialized.*;
import System.ComponentModel.*;
import System.Web.UI.*;
import System.Web.UI.WebControls.*;

public class RadioButtonField extends CheckBoxField
{    
    public RadioButtonField()
    {
    } //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 Object GetDesignTimeValue()
    {
        return (System.Boolean)false;
    } //GetDesignTimeValue

    // This method is called by the ExtractRowValues methods on GridView 
    //and DetailsView. Retrieve
    // the current value of the cell from the Checked state of the Radio button.
    public void ExtractValuesFromCell(IOrderedDictionary dictionary, 
        DataControlFieldCell cell, DataControlRowState rowState, 
        boolean includeReadOnly) throws InvalidOperationException
    {
        // Does the cell contain a RadioButton in its Controls collection?
        if (cell.get_Controls().get_Count() > 0) {
            RadioButton radio = (RadioButton)cell.get_Controls().get_Item(0);

            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 = (System.Boolean)radio.get_Checked();
            }
            // Add the value of the Checked attribute of the
            // RadioButton to the dictionary.
            if (dictionary.Contains(get_DataField())) {
                dictionary.set_Item(get_DataField(), checkedValue);
            }
            else {
                dictionary.Add(get_DataField(), checkedValue);
            }
        }
    } //ExtractValuesFromCell

    // This method adds a RadioButton control and any other content to the
    //cell's Controls collection.
    protected 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 (get_DataField().get_Length() != 0) {
            radio.add_DataBinding(new EventHandler(this.OnDataBindField));
        }
        radio.set_Text(this.get_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.set_Enabled(false);
        // If the row is in edit mode, enable the button.
        if (((int)(rowState & DataControlRowState.Edit) != 0) || ((int)(
            rowState & DataControlRowState.Insert) != 0)) {
            radio.set_Enabled(true);
        }
        cell.get_Controls().Add(radio);
    } //InitializeDataCell
} //RadioButtonField    

L'exemple de code suivant illustre l'utilisation de la classe RadioButtonField fournie dans l'exemple précédent dans un contrôle GridView. Dans cet exemple, le contrôle GridView affiche des données pour une équipe de sport. Les données sur les joueurs sont gérées dans une table de données qui inclut une colonne ID, colonnes prévues pour le nom des joueurs, et une colonne true ou false qui identifie le capitaine de l'équipe. La classe RadioButtonField est utilisée pour afficher quel membre de l'équipe est le capitaine actuel. Le contrôle GridView peut être modifié pour choisir un nouveau capitaine d'équipe ou pour modifier d'autres informations sur le joueur.

<%@ page language="C#" %>
<%@ Register Tagprefix="aspSample"
             Namespace="Samples.AspNet.CS"
             Assembly="Samples.AspNet.CS" %>

<html>
<body>
    <form 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="VJ#" %>
<%@ Register Tagprefix="aspSample"
             Namespace="Samples.AspNet"
             Assembly="Samples.AspNet.JSL" %>

<html>
<body>
    <form 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="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind"
          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>

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft