DataBoundControlAdapter Classe

Définition

Personnalise le comportement d'un objet DataBoundControl auquel l'adaptateur est associé lors de requêtes spécifiques dans un navigateur.

public ref class DataBoundControlAdapter : System::Web::UI::WebControls::Adapters::WebControlAdapter
public class DataBoundControlAdapter : System.Web.UI.WebControls.Adapters.WebControlAdapter
type DataBoundControlAdapter = class
    inherit WebControlAdapter
Public Class DataBoundControlAdapter
Inherits WebControlAdapter
Héritage
DataBoundControlAdapter

Exemples

Les exemples de code suivants créent et utilisent deux contrôles dérivés :

  • La MyDataBound classe, dérivée de DataBoundControl, est un simple contrôle de grille en lecture seule.

  • La MyDataBoundAdapter classe, dérivée de DataBoundControlAdapter, restitue les données de grille sous la forme d’une liste unidimensionnelle avec des séparateurs de lignes, adapté aux navigateurs à petit écran.

Le premier exemple de code utilise une page Web pour déclarer un MyDataBound contrôle et une instance de ObjectDataSource qui fournit des données sous la forme d’un DataView objet.

Le deuxième exemple de code contient les classes dérivées MyDataBound et :MyDataBoundAdapter

  • La MyDataBound classe remplace la PerformDataBinding méthode pour enregistrer une IEnumerator collection pour la source de données et remplace la RenderContents méthode pour restituer la source de données en tant que code HTML <table>.

  • La MyDataBoundAdapter classe remplace PerformDataBinding pour enregistrer la source de données dans une dimension unique ArrayList et ajouter des séparateurs de ligne. Il remplace pour restituer le ArrayList sous la forme d’une liste de champs séparés RenderContents par <br /> des balises.

using System;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Collections;
using System.Security.Permissions;

namespace MyControls
{
    // MyDataBound control is a simple read-only grid control.
    [AspNetHostingPermission(SecurityAction.Demand,
        Level = AspNetHostingPermissionLevel.Minimal)]
    [AspNetHostingPermission(SecurityAction.InheritanceDemand,
        Level = AspNetHostingPermissionLevel.Minimal)]
    public class MyDataBound : System.Web.UI.WebControls.DataBoundControl
    {
        // This is an enumerator for the data source.
        IEnumerator dataSourceEnumerator = null;

        // Render the data source as a table, without row and column headers.
        protected override void RenderContents(
            System.Web.UI.HtmlTextWriter writer)
        {
            // Render the <table> tag.
            writer.RenderBeginTag(HtmlTextWriterTag.Table);

            // Render the table rows.
            while (dataSourceEnumerator.MoveNext())
            {
                // Get the next data row as an object array.
                object[] dataArray = 
                    ((DataRowView)dataSourceEnumerator.Current).Row.ItemArray;

                // Render the <tr> tag.
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);

                // Render the fields of the row.
                for(int col = 0; col<dataArray.GetLength(0) ; col++)
                {
                    //Render the <td> tag, the field data and the </td> tag.
                    writer.RenderBeginTag(HtmlTextWriterTag.Td);
                    writer.Write(dataArray[col]);
                    writer.RenderEndTag();
                }
                // Render the </tr> tag.
                writer.RenderEndTag();
            }
            // Render the </table> tag.
            writer.RenderEndTag();
        }

        // Data binding consists of saving an enumerator for the data.
        protected override void PerformDataBinding(IEnumerable data)
        {
            dataSourceEnumerator = data.GetEnumerator();
        }
    }

    // MyDataBoundAdapter modifies a MyDataBound control to display a
    // grid as a list with row separators.
    [AspNetHostingPermission(SecurityAction.Demand,
        Level = AspNetHostingPermissionLevel.Minimal)]
    [AspNetHostingPermission(SecurityAction.InheritanceDemand,
        Level = AspNetHostingPermissionLevel.Minimal)]
    public class MyDataBoundAdapter :
        System.Web.UI.WebControls.Adapters.DataBoundControlAdapter
    {
        // Returns a strongly-typed reference to the MyDataBound control.
        public new MyDataBound Control
        {
            get
            {
                return (MyDataBound)base.Control;
            }
        }

        // One-dimensional list for the grid data.
        ArrayList dataArray = new ArrayList();

        // Copy grid data to one-dimensional list, add row separators.
        protected override void PerformDataBinding(IEnumerable data)
        {
            IEnumerator dataSourceEnumerator = data.GetEnumerator();

            // Iterate through the table rows.
            while (dataSourceEnumerator.MoveNext())
            {
                // Add the next data row to the ArrayList.
                dataArray.AddRange(
                    ((DataRowView)dataSourceEnumerator.Current).Row.ItemArray);

                // Add a separator to the ArrayList.
                dataArray.Add("----------");
            }
        }

        // Render the data source as a one-dimensional list.
        protected override void RenderContents(
            System.Web.UI.HtmlTextWriter writer)
        {
            // Render the data list.
            for( int col=0; col<dataArray.Count;col++)
            {
                writer.Write(dataArray[col]);
                writer.WriteBreak();
            }
        }
    }
}
Imports System.Data
Imports System.Web
Imports System.Web.UI
Imports System.Collections
Imports System.Security
Imports System.Security.Permissions

Namespace MyControls

    ' MyDataBound control is a simple read-only grid control.
    <AspNetHostingPermission(SecurityAction.Demand, _
        Level:=AspNetHostingPermissionLevel.Minimal)> _
    <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
        Level:=AspNetHostingPermissionLevel.Minimal)> _
    Public Class MyDataBound
        Inherits System.Web.UI.WebControls.DataBoundControl

        ' This is an enumerator for the data source.
        Private dataSourceEnumerator As IEnumerator = Nothing

        ' Render the data source as a table, without row and column headers.
        Protected Overrides Sub RenderContents( _
            ByVal writer As System.Web.UI.HtmlTextWriter)

            ' Render the <table> tag.
            writer.RenderBeginTag(HtmlTextWriterTag.Table)

            ' Render the table rows.
            While dataSourceEnumerator.MoveNext()

                ' Get the next data row as an object array.
                Dim dataArray As Object() = CType( _
                    dataSourceEnumerator.Current, DataRowView).Row.ItemArray

                ' Render the <tr> tag.
                writer.RenderBeginTag(HtmlTextWriterTag.Tr)

                ' Render the fields of the row.
                Dim col As Integer
                For col = 0 To (dataArray.GetLength(0)) - 1

                    'Render the <td> tag, the field data and the </td> tag.
                    writer.RenderBeginTag(HtmlTextWriterTag.Td)
                    writer.Write(dataArray(col))
                    writer.RenderEndTag()
                Next col

                ' Render the </tr> tag.
                writer.RenderEndTag()
            End While

            ' Render the </table> tag.
            writer.RenderEndTag()
        End Sub

        ' Data binding consists of saving an enumerator for the data.
        Protected Overrides Sub PerformDataBinding(ByVal data As IEnumerable)

            dataSourceEnumerator = data.GetEnumerator()
        End Sub
    End Class

    ' MyDataBoundAdapter modifies a MyDataBound control to display a
    ' grid as a list with row separators.
    <AspNetHostingPermission(SecurityAction.Demand, _
        Level:=AspNetHostingPermissionLevel.Minimal)> _
    <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
        Level:=AspNetHostingPermissionLevel.Minimal)> _
    Public Class MyDataBoundAdapter
        Inherits System.Web.UI.WebControls.Adapters.DataBoundControlAdapter

        ' Returns a strongly-typed reference to the MyDataBound control.
        Public Shadows ReadOnly Property Control() As MyDataBound
            Get
                Return CType(MyBase.Control, MyDataBound)
            End Get
        End Property

        ' One-dimensional list for the grid data.
        Private dataArray As New ArrayList()

        ' Copy grid data to one-dimensional list, add row separators.
        Protected Overrides Sub PerformDataBinding(ByVal data As IEnumerable)

            Dim dataSourceEnumerator As IEnumerator = data.GetEnumerator()

            ' Iterate through the table rows.
            While dataSourceEnumerator.MoveNext()

                ' Add the next data row to the ArrayList.
                dataArray.AddRange(CType(dataSourceEnumerator.Current, _
                                        DataRowView).Row.ItemArray)

                ' Add a separator to the ArrayList.
                dataArray.Add("----------")
            End While
        End Sub

        ' Render the data source as a one-dimensional list.
        Protected Overrides Sub RenderContents( _
            ByVal writer As System.Web.UI.HtmlTextWriter)

            ' Render the data list.
            Dim col As Integer
            For col = 0 To dataArray.Count - 1
                writer.Write(dataArray(col))
                writer.WriteBreak()
            Next col
        End Sub
    End Class
End Namespace ' MyControls

Le troisième exemple de code utilise un fichier de configuration pour spécifier qu’aucun adaptateur de contrôle ne doit être utilisé avec MyDataBound des contrôles pour Microsoft navigateurs Internet Explorer, et qu’un MyDataBoundAdapter est utilisé avec MyDataBound des contrôles pour les navigateurs Openwave UP.

Remarques

Un contrôle dérivé de la DataBoundControl classe est lié à une source de données et génère son interface utilisateur ou sa hiérarchie de contrôle enfant en énumérant les éléments de la source de données à laquelle il est lié. DataBoundControl est une classe de base abstraite qui définit les caractéristiques communes de tous les contrôles qui peuvent être liés à une source de données, comme les DataGrid contrôles et ListBox . Pour plus d'informations, consultez DataBoundControl.

Un DataBoundControlAdapter modifie le comportement d’un DataBoundControl pour un navigateur ou une classe de navigateurs spécifique, ou agit comme un filtre sur certaines fonctionnalités. Une grande partie de l’adaptabilité du comportement de rendu peut être encapsulée dans les classes spécialisées qui dérivent de la HtmlTextWriter classe. Par conséquent, il est probable qu’un seul adaptateur puisse être utilisé pour un certain nombre de comportements de classe de navigateur ou que l’inclusion de l’adaptabilité dans les HtmlTextWriter classes peut rendre l’utilisation d’un adaptateur de contrôle inutile.

Chaque contrôle a des mappages explicites aux adaptateurs via les fichiers de définition .browser, s’il existe <controlAdapter> des entrées dans ces fichiers. Ainsi, tout accès à la Adapter propriété de utilise DataBoundControl l’objet HttpBrowserCapabilities extrait des fichiers de définition .browser pour effectuer la recherche du mappage de l’adaptateur à contrôler.

Pendant le traitement, .NET Framework intercepte les appels aux méthodes d’un contrôle qui peuvent être spécifiques au navigateur. Si un adaptateur de contrôle est attaché, .NET Framework appelle les méthodes d’adaptateur associées. Pour plus d'informations, consultez ControlAdapter.

La méthode M:System.Web.UI.WebControls.Adapters.DataBoundControlAdapter.PerformDataBinding(System.Collections.IEnumerable) lie une collection énumérable au associé DataBoundControl. La Control propriété retourne une référence fortement typée à .DataBoundControl

Constructeurs

DataBoundControlAdapter()

Initialise une nouvelle instance de la classe DataBoundControlAdapter.

Propriétés

Browser

Reçoit une référence aux fonctionnalités de navigation du client effectuant la demande HTTP en cours.

(Hérité de ControlAdapter)
Control

Récupère une référence fortement typée à l'objet DataBoundControl associé à cet adaptateur de contrôle.

IsEnabled

Obtient une valeur indiquant si le contrôle Web et tous ses contrôles parents sont activés.

(Hérité de WebControlAdapter)
Page

Reçoit une référence à la page sur laquelle réside le contrôle associé à cet adaptateur.

(Hérité de ControlAdapter)
PageAdapter

Reçoit une référence à l'adaptateur de page pour la page sur laquelle réside le contrôle associé.

(Hérité de ControlAdapter)

Méthodes

BeginRender(HtmlTextWriter)

Appelé avant le rendu d'un contrôle. Dans une classe d'adaptateur dérivée, génère des balises d'ouverture requises par une cible spécifique mais pas par les navigateurs HTML.

(Hérité de ControlAdapter)
CreateChildControls()

Crée les contrôles enfants spécifiques à la cible pour un contrôle composite.

(Hérité de ControlAdapter)
EndRender(HtmlTextWriter)

Appelé après le rendu d'un contrôle. Dans une classe d'adaptateur dérivée, génère des balises de fermeture requises par une cible spécifique mais pas par les navigateurs HTML.

(Hérité de ControlAdapter)
Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
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)
LoadAdapterControlState(Object)

Charge des informations sur l'état du contrôle d'adaptateur qui ont été enregistrées par SaveAdapterControlState(), lors d'une demande antérieure, sur la page sur laquelle réside le contrôle associé à cet adaptateur de contrôles.

(Hérité de ControlAdapter)
LoadAdapterViewState(Object)

Charge des informations sur l'état d'affichage de l'adaptateur qui ont été enregistrées par SaveAdapterViewState(), lors d'une demande antérieure, sur la page sur laquelle réside le contrôle associé à cet adaptateur de contrôles.

(Hérité de ControlAdapter)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
OnInit(EventArgs)

Substitue la méthode OnInit(EventArgs) au contrôle associé.

(Hérité de ControlAdapter)
OnLoad(EventArgs)

Substitue la méthode OnLoad(EventArgs) au contrôle associé.

(Hérité de ControlAdapter)
OnPreRender(EventArgs)

Substitue la méthode OnPreRender(EventArgs) au contrôle associé.

(Hérité de ControlAdapter)
OnUnload(EventArgs)

Substitue la méthode OnUnload(EventArgs) au contrôle associé.

(Hérité de ControlAdapter)
PerformDataBinding(IEnumerable)

Lie à l'adaptateur de contrôle les données figurant dans la source de données de l'objet DataBoundControl associé.

Render(HtmlTextWriter)

Génère le balisage spécifique à la cible pour le contrôle auquel l’adaptateur de contrôle est attaché.

(Hérité de WebControlAdapter)
RenderBeginTag(HtmlTextWriter)

Crée la balise de début pour le contrôle Web dans le balisage transmis au navigateur cible.

(Hérité de WebControlAdapter)
RenderChildren(HtmlTextWriter)

Génère la balise spécifique à la cible pour les contrôles enfants dans un contrôle composite auquel l'adaptateur de contrôles est joint.

(Hérité de ControlAdapter)
RenderContents(HtmlTextWriter)

Génère le balisage interne spécifique à la cible pour le contrôle Web auquel l'adaptateur de contrôles est attaché.

(Hérité de WebControlAdapter)
RenderEndTag(HtmlTextWriter)

Crée la balise de fin pour le contrôle Web dans le balisage transmis au navigateur cible.

(Hérité de WebControlAdapter)
SaveAdapterControlState()

Enregistre les informations sur l'état de contrôle pour l'adaptateur de contrôles.

(Hérité de ControlAdapter)
SaveAdapterViewState()

Enregistre les informations sur l'état d'affichage pour l'adaptateur de contrôles.

(Hérité de ControlAdapter)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à

Voir aussi