Compartilhar via


DataBoundControlAdapter Classe

Definição

Personaliza o comportamento de um DataBoundControl objeto com o qual o adaptador está associado para solicitações específicas 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 exemplos de código a seguir criam e usam dois controles derivados:

  • A MyDataBound classe, derivada de DataBoundControl, é um controle de grade somente leitura simples.

  • A MyDataBoundAdapter classe, derivada de DataBoundControlAdapter, renderiza os dados de grade como uma lista unidimensional com separadores de linha, adequados para navegadores de tela pequena.

O primeiro exemplo de código usa uma página da Web para declarar um MyDataBound controle e uma instância que ObjectDataSource fornece dados na forma de um DataView objeto.

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

  • A MyDataBound classe substitui o PerformDataBinding método para salvar uma IEnumerator coleção para a fonte de dados e substitui o RenderContents método para renderizar a fonte de dados como um HTML <table>.

  • A MyDataBoundAdapter classe substitui para salvar a fonte de dados em um unidimensional PerformDataBindingArrayList e adicionar separadores de linha. Ele substitui RenderContents para renderizar como ArrayList uma lista de campos separados por <br /> marcas.

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 arquivo de configuração para especificar que nenhum adaptador de controle deve ser usado com MyDataBound controles para navegadores do Microsoft Internet Explorer e que um MyDataBoundAdapter é usado com MyDataBound controles para navegadores Openwave UP.

Comentários

Um controle derivado da DataBoundControl classe é associado a uma fonte de dados e gera sua interface do usuário ou hierarquia de controle filho enumerando os itens na fonte de dados à qual ela está associada. DataBoundControlé uma classe base abstrata que define as características comuns de todos os controles que podem ser associados a uma fonte de dados, como o e ListBox os DataGrid controles. Para obter mais informações, consulte DataBoundControl.

Uma DataBoundControlAdapter modifica o comportamento de um DataBoundControl navegador ou classe específica de navegadores ou atua como um filtro em alguma funcionalidade. 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 classe de navegador ou que a inclusão da adaptabilidade nas HtmlTextWriter classes possa tornar desnecessário o uso de um adaptador de controle.

Cada controle tem mapeamentos explícitos para adaptadores por meio dos arquivos de definição do .browser, se houver <controlAdapter> entradas nesses arquivos. Assim, qualquer acesso à Adapter propriedade do DataBoundControl objeto é HttpBrowserCapabilities extraído dos arquivos de definição do .browser para executar a pesquisa para o mapeamento do adaptador a ser controlado.

Durante o processamento, o .NET Framework intercepta chamadas para os métodos de um controle que pode ser específico do navegador. Se um adaptador de controle estiver anexado, o .NET Framework chamará os métodos de adaptador associados. Para obter mais informações, consulte ControlAdapter.

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

Construtores

Nome Description
DataBoundControlAdapter()

Inicializa uma nova instância da classe DataBoundControlAdapter.

Propriedades

Nome Description
Browser

Obtém uma referência aos recursos do navegador do cliente que está fazendo a solicitação HTTP atual.

(Herdado de ControlAdapter)
Control

Recupera uma referência fortemente tipada ao objeto associado a DataBoundControl esse adaptador de controle.

IsEnabled

Obtém um valor que indica se o controle Web e todos os seus controles pai estão habilitados.

(Herdado de WebControlAdapter)
Page

Obtém uma referência à página em que reside o controle associado a esse adaptador.

(Herdado de ControlAdapter)
PageAdapter

Obtém uma referência ao adaptador de página da página em que reside o controle associado.

(Herdado de ControlAdapter)

Métodos

Nome Description
BeginRender(HtmlTextWriter)

Chamado antes da renderização de um controle. Em uma classe de adaptador derivada, gera marcas de abertura que são exigidas por um destino específico, mas não necessárias para navegadores HTML.

(Herdado de ControlAdapter)
CreateChildControls()

Cria os controles filho específicos de destino para um controle composto.

(Herdado de ControlAdapter)
EndRender(HtmlTextWriter)

Chamado após a renderização de um controle. Em uma classe de adaptador derivada, gera marcas de fechamento que são exigidas por um destino específico, mas não necessárias para navegadores HTML.

(Herdado de ControlAdapter)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
LoadAdapterControlState(Object)

Carrega informações de estado de controle do adaptador que foram salvas durante SaveAdapterControlState() uma solicitação anterior à página em que o controle associado a esse adaptador de controle reside.

(Herdado de ControlAdapter)
LoadAdapterViewState(Object)

Carrega informações de estado de exibição do adaptador que foram salvas durante SaveAdapterViewState() uma solicitação anterior para a página em que o controle associado a esse adaptador de controle reside.

(Herdado de ControlAdapter)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
OnInit(EventArgs)

Substitui o OnInit(EventArgs) método para o controle associado.

(Herdado de ControlAdapter)
OnLoad(EventArgs)

Substitui o OnLoad(EventArgs) método para o controle associado.

(Herdado de ControlAdapter)
OnPreRender(EventArgs)

Substitui o OnPreRender(EventArgs) método para o controle associado.

(Herdado de ControlAdapter)
OnUnload(EventArgs)

Substitui o OnUnload(EventArgs) método para o controle associado.

(Herdado de ControlAdapter)
PerformDataBinding(IEnumerable)

Associa os dados na fonte de dados do objeto associado DataBoundControl ao adaptador de controle.

Render(HtmlTextWriter)

Gera a marcação específica de destino para o controle ao qual o adaptador de controle está anexado.

(Herdado de WebControlAdapter)
RenderBeginTag(HtmlTextWriter)

Cria a marcação inicial para o controle Web na marcação transmitida para o navegador de destino.

(Herdado de WebControlAdapter)
RenderChildren(HtmlTextWriter)

Gera a marcação específica de destino para os controles filho em um controle composto ao qual o adaptador de controle está anexado.

(Herdado de ControlAdapter)
RenderContents(HtmlTextWriter)

Gera a marcação interna específica de destino para o controle Web ao qual o adaptador de controle está anexado.

(Herdado de WebControlAdapter)
RenderEndTag(HtmlTextWriter)

Cria a marca final para o controle Web na marcação transmitida para o navegador de destino.

(Herdado de WebControlAdapter)
SaveAdapterControlState()

Salva informações de estado de controle para o adaptador de controle.

(Herdado de ControlAdapter)
SaveAdapterViewState()

Salva informações de estado de exibição para o adaptador de controle.

(Herdado de ControlAdapter)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também