DataBoundControlAdapter Classe

Definizione

Personalizza il comportamento di un oggetto DataBoundControl a cui è associato l'adattatore per richieste del browser specifiche.

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
Ereditarietà
DataBoundControlAdapter

Esempio

Gli esempi di codice seguenti creano e usano due controlli derivati:

  • La MyDataBound classe, derivata da DataBoundControl, è un semplice controllo griglia di sola lettura.

  • La MyDataBoundAdapter classe, derivata da , esegue il rendering dei dati della DataBoundControlAdaptergriglia come elenco unidimensionale con separatori di riga, adatti per i browser di piccole dimensioni.

Il primo esempio di codice usa una pagina Web per dichiarare un MyDataBound controllo e un'istanza di che fornisce dati sotto forma di DataViewObjectDataSource oggetto.

Il secondo esempio di codice contiene le classi derivate MyDataBound e MyDataBoundAdapter :

  • La MyDataBound classe esegue l'override del PerformDataBinding metodo per salvare una IEnumerator raccolta per l'origine dati e esegue l'override del metodo per eseguire il RenderContents rendering dell'origine dati come codice HTML <table>.

  • La MyDataBoundAdapter classe esegue PerformDataBinding l'override per salvare l'origine dati in un'origine dati unidimensionale ArrayList e aggiungere separatori di riga. Esegue l'override RenderContents per eseguire il ArrayList rendering come elenco di campi separati da <br /> tag.

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

Il terzo esempio di codice usa un file di configurazione per specificare che nessun adattatore di controllo deve essere usato con i controlli per i browser Microsoft Internet Explorer e che viene MyDataBoundAdapter usato con MyDataBoundMyDataBound i controlli per i browser Openwave UP.

Commenti

Un controllo derivato dalla DataBoundControl classe è associato a un'origine dati e genera la relativa interfaccia utente o gerarchia di controllo figlio enumerando gli elementi nell'origine dati a cui è associato. DataBoundControl è una classe base astratta che definisce le caratteristiche comuni di tutti i controlli che possono essere associati a un'origine dati, ad esempio i DataGrid controlli e ListBox . Per altre informazioni, vedere DataBoundControl.

Un DataBoundControlAdapter modifica il comportamento di un DataBoundControl oggetto per un browser o una classe specifica di browser o funge da filtro su alcune funzionalità. Gran parte dell'adattabilità nel comportamento di rendering può essere incapsulata nelle classi specializzate che derivano dalla HtmlTextWriter classe. Pertanto, è probabile che una singola scheda possa essere usata per un certo numero di comportamenti della classe del browser o che l'inclusione dell'adattabilità nelle HtmlTextWriter classi può rendere non necessario l'uso di una scheda di controllo.

Ogni controllo include mapping espliciti agli adattatori tramite i file di definizione del browser, se sono presenti <controlAdapter> voci in questi file. Pertanto, qualsiasi accesso alla Adapter proprietà dell'oggetto DataBoundControl usa l'oggetto HttpBrowserCapabilities estratto dai file di definizione del browser per eseguire la ricerca del mapping dell'adapter al controllo.

Durante l'elaborazione, .NET Framework intercetta le chiamate ai metodi di un controllo che potrebbero essere specifici del browser. Se un adattatore di controllo è collegato, .NET Framework chiama i metodi dell'adapter associati. Per altre informazioni, vedere ControlAdapter.

Il metodo M:System.Web.UI.WebControls.Adapters.DataBoundControlAdapter.PerformDataBinding(System.Collections.IEnumerable) associa un insieme enumerabile all'oggetto associato DataBoundControl. La Control proprietà restituisce un riferimento fortemente tipizzato a DataBoundControl.

Costruttori

DataBoundControlAdapter()

Inizializza una nuova istanza della classe DataBoundControlAdapter.

Proprietà

Browser

Ottiene un riferimento alle funzionalità del browser del client che effettua la richiesta HTTP corrente.

(Ereditato da ControlAdapter)
Control

Recupera un riferimento fortemente tipizzato all'oggetto DataBoundControl associato a questo adattatore di controllo.

IsEnabled

Ottiene un valore che indica se il controllo Web e tutti i relativi controlli padre sono abilitati.

(Ereditato da WebControlAdapter)
Page

Ottiene un riferimento alla pagina in cui si trova il controllo associato a questo adattatore.

(Ereditato da ControlAdapter)
PageAdapter

Ottiene un riferimento all'adattatore di pagina per la pagina in cui si trova il controllo associato.

(Ereditato da ControlAdapter)

Metodi

BeginRender(HtmlTextWriter)

Questo metodo viene chiamato prima di effettuare il rendering di un controllo. In una classe di adattatore derivata, genera i tag di apertura richiesti da una destinazione specifica ma non necessari per i browser HTML.

(Ereditato da ControlAdapter)
CreateChildControls()

Crea i controlli figlio specifici della destinazione per un controllo composito.

(Ereditato da ControlAdapter)
EndRender(HtmlTextWriter)

Questo metodo viene chiamato dopo il rendering di un controllo. In una classe di adattatore derivata, genera i tag di chiusura richiesti da una destinazione specifica ma non necessari per i browser HTML.

(Ereditato da ControlAdapter)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
LoadAdapterControlState(Object)

Carica le informazioni sullo stato di controllo dell'adattatore salvate dal metodo SaveAdapterControlState() durante una precedente richiesta alla pagina in cui si trova il controllo associato a questo adattatore di controllo.

(Ereditato da ControlAdapter)
LoadAdapterViewState(Object)

Carica le informazioni sullo stato di visualizzazione dell'adattatore salvate dal metodo SaveAdapterViewState() durante una precedente richiesta alla pagina in cui si trova il controllo associato a questo adattatore di controllo.

(Ereditato da ControlAdapter)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnInit(EventArgs)

Esegue l'override del metodo OnInit(EventArgs) per il controllo associato.

(Ereditato da ControlAdapter)
OnLoad(EventArgs)

Esegue l'override del metodo OnLoad(EventArgs) per il controllo associato.

(Ereditato da ControlAdapter)
OnPreRender(EventArgs)

Esegue l'override del metodo OnPreRender(EventArgs) per il controllo associato.

(Ereditato da ControlAdapter)
OnUnload(EventArgs)

Esegue l'override del metodo OnUnload(EventArgs) per il controllo associato.

(Ereditato da ControlAdapter)
PerformDataBinding(IEnumerable)

Associa all'adattatore di controllo i dati nell'origine dati dell'oggetto DataBoundControl associato.

Render(HtmlTextWriter)

Genera il markup specifico della destinazione per il controllo a cui è associato l'adattatore del controllo.

(Ereditato da WebControlAdapter)
RenderBeginTag(HtmlTextWriter)

Crea il tag di inizio per il controllo Web nel markup trasmesso al browser di destinazione.

(Ereditato da WebControlAdapter)
RenderChildren(HtmlTextWriter)

Genera il markup specifico della destinazione per i controlli figlio in un controllo composito al quale è collegato l'adattatore del controllo.

(Ereditato da ControlAdapter)
RenderContents(HtmlTextWriter)

Genera il markup interno specifico della destinazione per il controllo Web a cui è associato l'adattatore di controllo.

(Ereditato da WebControlAdapter)
RenderEndTag(HtmlTextWriter)

Crea il tag di fine per il controllo Web nel markup trasmesso al browser di destinazione.

(Ereditato da WebControlAdapter)
SaveAdapterControlState()

Salva le informazioni sullo stato del controllo per l'adattatore del controllo.

(Ereditato da ControlAdapter)
SaveAdapterViewState()

Salva le informazioni sullo stato di visualizzazione per l'adattatore del controllo.

(Ereditato da ControlAdapter)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Vedi anche