DataBoundControlAdapter Classe

Definição

Personaliza o comportamento de um DataBoundControl objeto com o qual o adaptador está associado para pedidos específicos do navegador.

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
Herança
DataBoundControlAdapter

Exemplos

Os seguintes exemplos de código criam e utilizam dois controlos derivados:

  • A MyDataBound classe, derivada de DataBoundControl, é um controlo de grelha simples de leitura.

  • A MyDataBoundAdapter classe, derivada de DataBoundControlAdapter, renderiza os dados da grelha como uma lista unidimensional com separadores de linhas, adequada para navegadores de ecrã pequeno.

O primeiro exemplo de código usa uma página Web para declarar um MyDataBound controlo e uma instância disso ObjectDataSource fornece dados sob a forma de um DataView objeto.

O segundo exemplo de código contém as classes e MyDataBoundAdapter derivadasMyDataBound:

  • A MyDataBound classe sobrepõe o PerformDataBinding método para guardar uma IEnumerator coleção para a fonte de dados e sobrepõe-se ao RenderContents método para renderizar a fonte de dados como HTML <table>.

  • A MyDataBoundAdapter classe sobrepõe-se PerformDataBinding para guardar a fonte de dados numa unidimensional ArrayList e adicionar separadores de linha. Sobrepõe-se RenderContents para renderizar o ArrayList como uma lista de campos separados 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

O terceiro exemplo de código usa um ficheiro de configuração para especificar que nenhum adaptador de controlo deve ser usado com controlos MyDataBound para navegadores Microsoft Internet Explorer, e que um MyDataBoundAdapter é usado com controlos MyDataBound para navegadores Openwave UP.

Observações

Um controlo derivado da DataBoundControl classe está ligado a uma fonte de dados e gera a sua interface de utilizador ou hierarquia de controlo filho enumerando os itens na fonte de dados à qual está vinculado. DataBoundControlé uma classe base abstrata que define as características comuns de todos os controlos que podem ser ligados a uma fonte de dados, como os DataGrid controlos e.ListBox Para obter mais informações, veja DataBoundControl.

A DataBoundControlAdapter modifica o comportamento de a DataBoundControl para um navegador específico ou classe de navegadores, ou atua como filtro para alguma capacidade. Grande parte da adaptabilidade no comportamento de renderização pode ser encapsulada nas classes especializadas que derivam da HtmlTextWriter classe. Portanto, é provável que um único adaptador possa ser usado para vários comportamentos de classes de navegador ou que a inclusão da adaptabilidade nas HtmlTextWriter classes torne desnecessária a utilização de um adaptador de controlo.

Cada controlo tem mapeamentos explícitos para adaptadores através dos ficheiros de definição .browser, caso existam <controlAdapter> entradas nesses ficheiros. Assim, qualquer acesso à Adapter propriedade de utiliza DataBoundControl o HttpBrowserCapabilities objeto extraído dos ficheiros de definição .browser para realizar a pesquisa do mapeamento do adaptador para controlo.

Durante o processamento, o .NET Framework interceta chamadas para os métodos de um controlo que podem ser específicas do navegador. Se um adaptador de controlo estiver ligado, o .NET Framework chama os métodos do adaptador associados. Para obter mais informações, veja ControlAdapter.

O método M:System.Web.UI.WebControls.Adapters.DataBoundControlAdapter.PerformDataBinding(System.Collections.IEnumerable) associa uma coleção enumerável ao .DataBoundControl A Control propriedade devolve uma referência fortemente tipada ao DataBoundControl.

Construtores

Name Description
DataBoundControlAdapter()

Inicializa uma nova instância da DataBoundControlAdapter classe.

Propriedades

Name Description
Browser

Obtém uma referência às capacidades do navegador do cliente que faz o pedido HTTP atual.

(Herdado de ControlAdapter)
Control

Recupera uma referência fortemente tipada ao DataBoundControl objeto associado a este adaptador de controlo.

IsEnabled

Recebe um valor que indica se o controlo Web e todos os seus controlos pais estão ativados.

(Herdado de WebControlAdapter)
Page

Recebe uma referência para a página onde está o controlo associado a este adaptador.

(Herdado de ControlAdapter)
PageAdapter

Obtém uma referência ao adaptador de página da página onde reside o controlo associado.

(Herdado de ControlAdapter)

Métodos

Name Description
BeginRender(HtmlTextWriter)

Chamado antes da renderização de um controlo. Numa classe adaptadora derivada, gera etiquetas de abertura que são exigidas por um destino específico mas não necessárias pelos navegadores HTML.

(Herdado de ControlAdapter)
CreateChildControls()

Cria os controlos filhos específicos do alvo para um controlo composto.

(Herdado de ControlAdapter)
EndRender(HtmlTextWriter)

Chamado após a renderização de um controlo. Numa classe adaptadora derivada, gera etiquetas de fecho que são exigidas por um destino específico mas não necessárias pelos navegadores HTML.

(Herdado de ControlAdapter)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
LoadAdapterControlState(Object)

Carrega a informação do estado de controlo do adaptador que foi guardada SaveAdapterControlState() durante um pedido anterior na página onde reside o controlo associado a este adaptador.

(Herdado de ControlAdapter)
LoadAdapterViewState(Object)

O adaptador carrega a informação de estado da visualização que foi guardada durante SaveAdapterViewState() um pedido anterior para a página onde reside o controlo associado a este adaptador de controlo.

(Herdado de ControlAdapter)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
OnInit(EventArgs)

Sobrepõe o OnInit(EventArgs) método para o controlo associado.

(Herdado de ControlAdapter)
OnLoad(EventArgs)

Sobrepõe o OnLoad(EventArgs) método para o controlo associado.

(Herdado de ControlAdapter)
OnPreRender(EventArgs)

Sobrepõe o OnPreRender(EventArgs) método para o controlo associado.

(Herdado de ControlAdapter)
OnUnload(EventArgs)

Sobrepõe o OnUnload(EventArgs) método para o controlo associado.

(Herdado de ControlAdapter)
PerformDataBinding(IEnumerable)

Vincula os dados da fonte de dados do objeto associado DataBoundControl ao adaptador de controlo.

Render(HtmlTextWriter)

Gera a marcação específica do alvo para o controlo ao qual o adaptador de controlo está ligado.

(Herdado de WebControlAdapter)
RenderBeginTag(HtmlTextWriter)

Cria a etiqueta inicial para o controlo Web na marcação que é transmitida para o navegador de destino.

(Herdado de WebControlAdapter)
RenderChildren(HtmlTextWriter)

Gera a marcação específica do alvo para os controlos filhos num controlo composto ao qual o adaptador de controlo está ligado.

(Herdado de ControlAdapter)
RenderContents(HtmlTextWriter)

Gera a marcação interna específica do alvo para o controlo Web ao qual o adaptador de controlo está ligado.

(Herdado de WebControlAdapter)
RenderEndTag(HtmlTextWriter)

Cria a etiqueta final para o controlo Web na marcação que é transmitida ao navegador de destino.

(Herdado de WebControlAdapter)
SaveAdapterControlState()

Guarda a informação do estado de controlo para o adaptador de controlo.

(Herdado de ControlAdapter)
SaveAdapterViewState()

Guarda a informação do estado da vista para o adaptador de controlo.

(Herdado de ControlAdapter)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também