Compartir a través de


DataBoundControlAdapter Clase

Definición

Personaliza el comportamiento de un objeto DataBoundControl al que está asociado el adaptador para solicitudes específicas del explorador.

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
Herencia
DataBoundControlAdapter

Ejemplos

Los ejemplos de código siguientes crean y usan dos controles derivados:

  • La MyDataBound clase, derivada de DataBoundControl, es un sencillo control de cuadrícula de solo lectura.

  • La MyDataBoundAdapter clase, derivada de , representa los datos de DataBoundControlAdaptercuadrícula como una lista unidimensional con separadores de filas, adecuados para exploradores de pantalla pequeños.

En el primer ejemplo de código se usa una página web para declarar un MyDataBound control y una instancia de ObjectDataSource que proporciona datos en forma de objeto DataView .

El segundo ejemplo de código contiene las clases y MyDataBoundAdapter derivadasMyDataBound:

  • La MyDataBound clase invalida el PerformDataBinding método para guardar una IEnumerator colección para el origen de datos e invalida el RenderContents método para representar el origen de datos como html <table>.

  • La MyDataBoundAdapter clase invalida PerformDataBinding para guardar el origen de datos en una unidimensional ArrayList y agregar separadores de filas. Invalida para representar como ArrayList una lista de campos separados RenderContents por <br /> etiquetas.

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

En el tercer ejemplo de código se usa un archivo de configuración para especificar que no se va a usar ningún adaptador de control con MyDataBound controles para exploradores de Microsoft Internet Explorer y que MyDataBoundAdapter se usa con MyDataBound controles para exploradores Openwave UP.

Comentarios

Un control derivado de la DataBoundControl clase está enlazado a un origen de datos y genera su interfaz de usuario o jerarquía de controles secundarios mediante la enumeración de los elementos del origen de datos al que está enlazado. DataBoundControl es una clase base abstracta que define las características comunes de todos los controles que se pueden enlazar a un origen de datos, como los DataGrid controles y ListBox . Para obtener más información, vea DataBoundControl.

DataBoundControlAdapter Modifica el comportamiento de para DataBoundControl un explorador específico o clase de exploradores, o actúa como filtro en alguna funcionalidad. Gran parte de la adaptabilidad en el comportamiento de representación se puede encapsular en las clases especializadas que derivan de la HtmlTextWriter clase . Por lo tanto, es probable que un único adaptador se pueda usar para varios comportamientos de clase de explorador o que la inclusión de la adaptabilidad en las HtmlTextWriter clases puede hacer que el uso de un adaptador de control no sea necesario.

Cada control tiene asignaciones explícitas a adaptadores a través de los archivos de definición de .browser, si hay <controlAdapter> entradas en estos archivos. Por lo tanto, cualquier acceso a la Adapter propiedad de DataBoundControl utiliza el HttpBrowserCapabilities objeto extraído de los archivos de definición .browser para realizar la búsqueda de la asignación del adaptador que se va a controlar.

Durante el procesamiento, el .NET Framework intercepta las llamadas a los métodos de un control que podrían ser específicos del explorador. Si se conecta un adaptador de control, el .NET Framework llama a los métodos de adaptador asociados. Para obtener más información, vea ControlAdapter.

El método M:System.Web.UI.WebControls.Adapters.DataBoundControlAdapter.PerformDataBinding(System.Collections.IEnumerable) enlaza una colección enumerable a la asociada DataBoundControl. La Control propiedad devuelve una referencia fuertemente tipada a .DataBoundControl

Constructores

DataBoundControlAdapter()

Inicializa una nueva instancia de la clase DataBoundControlAdapter.

Propiedades

Browser

Obtiene una referencia a las posibilidades del explorador del cliente que realiza la solicitud HTTP actual.

(Heredado de ControlAdapter)
Control

Recupera una referencia fuertemente tipada al objeto DataBoundControl asociado a este adaptador de control.

IsEnabled

Obtiene un valor que indica si están habilitados el control Web y todos sus controles principales.

(Heredado de WebControlAdapter)
Page

Obtiene una referencia a la página donde reside el control asociado a este adaptador.

(Heredado de ControlAdapter)
PageAdapter

Obtiene una referencia al adaptador de la página donde reside el control asociado.

(Heredado de ControlAdapter)

Métodos

BeginRender(HtmlTextWriter)

Se le llama antes de la representación de un control. En una clase de adaptador derivada, genera etiquetas de apertura requeridas por un destino concreto pero que no son necesarias para los exploradores de HTML.

(Heredado de ControlAdapter)
CreateChildControls()

Crea los controles secundarios específicos del destino para un control compuesto.

(Heredado de ControlAdapter)
EndRender(HtmlTextWriter)

Se le llama después de la representación de un control. En una clase de adaptador derivada, genera etiquetas de cierre requeridas por un destino concreto pero que no son necesarias para los exploradores de HTML.

(Heredado de ControlAdapter)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
LoadAdapterControlState(Object)

Carga información de estado del control de adaptador, guardada por SaveAdapterControlState() durante una solicitud anterior, en la página donde reside el control asociado a este adaptador de control.

(Heredado de ControlAdapter)
LoadAdapterViewState(Object)

Carga información del estado de la vista del adaptador, guardada por SaveAdapterViewState() durante una solicitud anterior, en la página donde reside el control asociado a este adaptador de control.

(Heredado de ControlAdapter)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OnInit(EventArgs)

Reemplaza el método OnInit(EventArgs) para el control asociado.

(Heredado de ControlAdapter)
OnLoad(EventArgs)

Reemplaza el método OnLoad(EventArgs) para el control asociado.

(Heredado de ControlAdapter)
OnPreRender(EventArgs)

Reemplaza el método OnPreRender(EventArgs) para el control asociado.

(Heredado de ControlAdapter)
OnUnload(EventArgs)

Reemplaza el método OnUnload(EventArgs) para el control asociado.

(Heredado de ControlAdapter)
PerformDataBinding(IEnumerable)

Enlaza los datos del origen de datos del objeto DataBoundControl asociado al adaptador de control.

Render(HtmlTextWriter)

Genera el marcado específico del destino para el control al que está asociado el adaptador de control.

(Heredado de WebControlAdapter)
RenderBeginTag(HtmlTextWriter)

Crea la etiqueta de principio para el control Web en el marcado transmitido al explorador de destino.

(Heredado de WebControlAdapter)
RenderChildren(HtmlTextWriter)

Genera el marcado específico del destino para los controles secundarios en un control compuesto al que está asociado el adaptador de control.

(Heredado de ControlAdapter)
RenderContents(HtmlTextWriter)

Genera el marcado interno específico del destino para el control Web al que está asociado el adaptador de control.

(Heredado de WebControlAdapter)
RenderEndTag(HtmlTextWriter)

Crea la etiqueta de cierre del control Web en el marcado transmitido al explorador de destino.

(Heredado de WebControlAdapter)
SaveAdapterControlState()

Guarda información de estado de control para el adaptador de control.

(Heredado de ControlAdapter)
SaveAdapterViewState()

Guarda información del estado de vista para el adaptador de control.

(Heredado de ControlAdapter)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también