DataBoundControlAdapter Classe

Definizione

Personalizza il comportamento di un oggetto DataBoundControl a cui è associato l'adattatore per richieste del browser specifiche.Customizes the behavior of a DataBoundControl object with which the adapter is associated for specific browser requests.

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

Esempi

Negli esempi di codice seguenti vengono creati e utilizzati due controlli derivati:The following code examples create and use two derived controls:

  • La MyDataBound classe, derivata da DataBoundControl, è un semplice controllo griglia di sola lettura.The MyDataBound class, derived from DataBoundControl, is a simple read-only grid control.

  • La MyDataBoundAdapter classe, derivata da DataBoundControlAdapter, esegue il rendering dei dati della griglia come un elenco unidimensionale con separatori di riga, adatti per i browser di piccole dimensioni.The MyDataBoundAdapter class, derived from DataBoundControlAdapter, renders the grid data as a one-dimensional list with row separators, suitable for small screen browsers.

Nel primo esempio di codice viene utilizzata una pagina Web per MyDataBound dichiarare un controllo e un' ObjectDataSource istanza di che fornisce dati DataView sotto forma di oggetto.The first code example uses a Web page to declare a MyDataBound control and an instance of ObjectDataSource that provides data in the form of a DataView object.

Il secondo esempio di codice contiene le MyDataBound classi MyDataBoundAdapter e derivate:The second code example contains the derived MyDataBound and MyDataBoundAdapter classes:

  • La MyDataBound classe esegue l' PerformDataBinding override del metodo per IEnumerator salvare una raccolta per l'origine dati ed esegue RenderContents l'override del metodo per eseguire il rendering dell' <table>origine dati come HTML.The MyDataBound class overrides the PerformDataBinding method to save an IEnumerator collection for the data source, and overrides the RenderContents method to render the data source as an HTML <table>.

  • La MyDataBoundAdapter classe esegue PerformDataBinding l'override di per salvare l'origine dati in un ArrayList separatore unidimensionale e aggiungere righe.The MyDataBoundAdapter class overrides PerformDataBinding to save the data source to a one-dimensional ArrayList and add row separators. Esegue l' RenderContents override di per ArrayList eseguire il rendering di come un elenco <br /> di campi separati da tag.It overrides RenderContents to render the ArrayList as a list of fields separated by <br /> tags.

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

Nel terzo esempio di codice viene utilizzato un file di configurazione per specificare che non è necessario utilizzare alcun MyDataBound adattatore di controllo con i controlli per i browser di MyDataBoundAdapter Microsoft Internet Explorer MyDataBound e che un oggetto viene utilizzato con i controlli per i browser Openwave.The third code example uses a configuration file to specify that no control adapter is to be used with MyDataBound controls for Microsoft Internet Explorer browsers, and that a MyDataBoundAdapter is used with MyDataBound controls for Openwave UP browsers.

Commenti

Un controllo derivato dalla DataBoundControl classe viene associato a un'origine dati e genera la relativa interfaccia utente o gerarchia dei controlli figlio enumerando gli elementi nell'origine dati a cui è associata.A control derived from the DataBoundControl class is bound to a data source and generates its user interface or child control hierarchy by enumerating the items in the data source to which it is bound. DataBoundControlè una classe di base astratta che definisce le caratteristiche comuni di tutti i controlli che possono essere associati a un'origine dati, ad DataGrid esempio ListBox i controlli e.DataBoundControl is an abstract base class that defines the common characteristics of all controls that can be bound to a data source, such as the DataGrid and ListBox controls. Per ulteriori informazioni, vedere DataBoundControl.For more information, see DataBoundControl.

Un DataBoundControlAdapter modifica il comportamento di un DataBoundControl oggetto per un browser o una classe di browser specifici o funge da filtro per alcune funzionalità.A DataBoundControlAdapter modifies the behavior of a DataBoundControl for a specific browser or class of browsers, or acts as a filter on some capability. Gran parte dell'adattamento nel comportamento di rendering può essere incapsulato nelle classi specializzate che derivano HtmlTextWriter dalla classe.Much of the adaptability in rendering behavior can be encapsulated in the specialized classes that derive from the HtmlTextWriter class. È pertanto probabile che sia possibile utilizzare un singolo adapter per diversi comportamenti della classe del browser o che l'inclusione dell'adattamento nelle HtmlTextWriter classi possa rendere superfluo l'utilizzo di un adattatore di controllo.Therefore, it is likely that a single adapter can be used for a number of browser class behaviors or that inclusion of the adaptability in the HtmlTextWriter classes can make the use of a control adapter unnecessary.

Ogni controllo dispone di mapping espliciti agli adapter tramite i file di definizione del browser, se <controlAdapter> sono presenti voci in tali file.Each control has explicit mappings to adapters through the .browser definition files, if there are <controlAdapter> entries in these files. Pertanto, qualsiasi accesso alla Adapter proprietà DataBoundControl di utilizza l' HttpBrowserCapabilities oggetto estratto dai file di definizione del browser per eseguire la ricerca del mapping dell'adapter al controllo.Thus, any access to the Adapter property of the DataBoundControl uses the HttpBrowserCapabilities object extracted from the .browser definition files to perform the lookup for the mapping of the adapter to control.

Durante l'elaborazione, il .NET Framework intercetta le chiamate ai metodi di un controllo che possono essere specifiche del browser.During processing, the .NET Framework intercepts calls to the methods of a control that could be browser specific. Se un adattatore di controllo è collegato, il .NET Framework chiama i metodi dell'adapter associati.If a control adapter is attached, the .NET Framework calls the associated adapter methods. Per ulteriori informazioni, vedere ControlAdapter.For more information, see ControlAdapter.

Il metodo Metodo m:System.Web.UI.WebControls.Adapters.DataBoundControlAdapter.PerformDataBinding (System. Collections. IEnumerable) associa una raccolta enumerabile all'oggetto DataBoundControlassociato.The M:System.Web.UI.WebControls.Adapters.DataBoundControlAdapter.PerformDataBinding(System.Collections.IEnumerable) method binds an enumerable collection to the associated DataBoundControl. La Control proprietà restituisce un riferimento fortemente tipizzato DataBoundControla.The Control property returns a strongly typed reference to the DataBoundControl.

Costruttori

DataBoundControlAdapter()

Inizializza una nuova istanza della classe DataBoundControlAdapter.Initializes a new instance of the DataBoundControlAdapter class.

Proprietà

Browser

Ottiene un riferimento alle funzionalità del browser del client che effettua la richiesta HTTP corrente.Gets a reference to the browser capabilities of the client making the current HTTP request.

(Ereditato da ControlAdapter)
Control

Recupera un riferimento fortemente tipizzato all'oggetto DataBoundControl associato a questo adattatore di controllo.Retrieves a strongly-typed reference to the DataBoundControl object associated with this control adapter.

IsEnabled

Ottiene un valore che indica se il controllo Web e tutti i relativi controlli padre sono abilitati.Gets a value indicating whether the Web control and all its parent controls are enabled.

(Ereditato da WebControlAdapter)
Page

Ottiene un riferimento alla pagina in cui si trova il controllo associato a questo adattatore.Gets a reference to the page where the control associated with this adapter resides.

(Ereditato da ControlAdapter)
PageAdapter

Ottiene un riferimento all'adattatore di pagina per la pagina in cui si trova il controllo associato.Gets a reference to the page adapter for the page where the associated control resides.

(Ereditato da ControlAdapter)

Metodi

BeginRender(HtmlTextWriter)

Questo metodo viene chiamato prima di effettuare il rendering di un controllo.Called prior to the rendering of a control. In una classe di adattatore derivata, genera i tag di apertura richiesti da una destinazione specifica ma non necessari per i browser HTML.In a derived adapter class, generates opening tags that are required by a specific target but not needed by HTML browsers.

(Ereditato da ControlAdapter)
CreateChildControls()

Crea i controlli figlio specifici della destinazione per un controllo composito.Creates the target-specific child controls for a composite control.

(Ereditato da ControlAdapter)
EndRender(HtmlTextWriter)

Questo metodo viene chiamato dopo il rendering di un controllo.Called after the rendering of a control. In una classe di adattatore derivata, genera i tag di chiusura richiesti da una destinazione specifica ma non necessari per i browser HTML.In a derived adapter class, generates closing tags that are required by a specific target but not needed by HTML browsers.

(Ereditato da ControlAdapter)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(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.Loads adapter control state information that was saved by SaveAdapterControlState() during a previous request to the page where the control associated with this control adapter resides.

(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.Loads adapter view state information that was saved by SaveAdapterViewState() during a previous request to the page where the control associated with this control adapter resides.

(Ereditato da ControlAdapter)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
OnInit(EventArgs)

Esegue l'override del metodo OnInit(EventArgs) per il controllo associato.Overrides the OnInit(EventArgs) method for the associated control.

(Ereditato da ControlAdapter)
OnLoad(EventArgs)

Esegue l'override del metodo OnLoad(EventArgs) per il controllo associato.Overrides the OnLoad(EventArgs) method for the associated control.

(Ereditato da ControlAdapter)
OnPreRender(EventArgs)

Esegue l'override del metodo OnPreRender(EventArgs) per il controllo associato.Overrides the OnPreRender(EventArgs) method for the associated control.

(Ereditato da ControlAdapter)
OnUnload(EventArgs)

Esegue l'override del metodo OnUnload(EventArgs) per il controllo associato.Overrides the OnUnload(EventArgs) method for the associated control.

(Ereditato da ControlAdapter)
PerformDataBinding(IEnumerable)

Associa all'adattatore di controllo i dati nell'origine dati dell'oggetto DataBoundControl associato.Binds the data in the data source of the associated DataBoundControl object to the control adapter.

Render(HtmlTextWriter)

Genera il markup specifico della destinazione per il controllo a cui è associato l'adattatore del controllo.Generates the target-specific markup for the control to which the control adapter is attached.

(Ereditato da WebControlAdapter)
RenderBeginTag(HtmlTextWriter)

Crea il tag di inizio per il controllo Web nel markup trasmesso al browser di destinazione.Creates the beginning tag for the Web control in the markup that is transmitted to the target browser.

(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.Generates the target-specific markup for the child controls in a composite control to which the control adapter is attached.

(Ereditato da ControlAdapter)
RenderContents(HtmlTextWriter)

Genera il markup interno specifico della destinazione per il controllo Web a cui è associato l'adattatore di controllo.Generates the target-specific inner markup for the Web control to which the control adapter is attached.

(Ereditato da WebControlAdapter)
RenderEndTag(HtmlTextWriter)

Crea il tag di fine per il controllo Web nel markup trasmesso al browser di destinazione.Creates the ending tag for the Web control in the markup that is transmitted to the target browser.

(Ereditato da WebControlAdapter)
SaveAdapterControlState()

Salva le informazioni sullo stato del controllo per l'adattatore del controllo.Saves control state information for the control adapter.

(Ereditato da ControlAdapter)
SaveAdapterViewState()

Salva le informazioni sullo stato di visualizzazione per l'adattatore del controllo.Saves view state information for the control adapter.

(Ereditato da ControlAdapter)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Si applica a

Vedi anche