Partilhar via


DataBoundControlAdapter Classe

Definição

Personaliza o comportamento de um objeto DataBoundControl ao qual o adaptador está associado para solicitações de navegador específicas.

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 derivadasMyDataBound:MyDataBoundAdapter

  • 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 PerformDataBinding ArrayList 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 de usuário ou hierarquia de controle filho enumerando os itens na fonte de dados à qual ele está associado. 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 controlesDataGrid. 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 algum recurso. Grande parte da adaptabilidade no comportamento de renderização pode ser encapsulada nas classes especializadas derivadas da HtmlTextWriter classe. Portanto, é provável que um único adaptador possa ser usado para vários comportamentos de classe do 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 para o DataBoundControl.

Construtores

DataBoundControlAdapter()

Inicializa uma nova instância da classe DataBoundControlAdapter.

Propriedades

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 DataBoundControl associado a esse adaptador de controle.

IsEnabled

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

(Herdado de WebControlAdapter)
Page

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

(Herdado de ControlAdapter)
PageAdapter

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

(Herdado de ControlAdapter)

Métodos

BeginRender(HtmlTextWriter)

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

(Herdado de ControlAdapter)
CreateChildControls()

Cria os controles filho de destino específico de um controle de composição.

(Herdado de ControlAdapter)
EndRender(HtmlTextWriter)

Chamado depois da renderização de um controle. Em uma classe de adaptador derivada, gera marcas de fechamento que são necessárias para um destino específico, mas não 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 sobre o estado do controle do adaptador que foram salvas pelo SaveAdapterControlState() durante a solicitação anterior à página em que o controle associado a esse adaptador de controle está.

(Herdado de ControlAdapter)
LoadAdapterViewState(Object)

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

(Herdado de ControlAdapter)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
OnInit(EventArgs)

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

(Herdado de ControlAdapter)
OnLoad(EventArgs)

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

(Herdado de ControlAdapter)
OnPreRender(EventArgs)

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

(Herdado de ControlAdapter)
OnUnload(EventArgs)

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

(Herdado de ControlAdapter)
PerformDataBinding(IEnumerable)

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

Render(HtmlTextWriter)

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

(Herdado de WebControlAdapter)
RenderBeginTag(HtmlTextWriter)

Cria a marca de início para o controle da Web na marcação que é transmitida para o navegador de destino.

(Herdado de WebControlAdapter)
RenderChildren(HtmlTextWriter)

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

(Herdado de ControlAdapter)
RenderContents(HtmlTextWriter)

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

(Herdado de WebControlAdapter)
RenderEndTag(HtmlTextWriter)

Cria a marca de término para o controle da Web na marcação que é transmitida para o navegador de destino.

(Herdado de WebControlAdapter)
SaveAdapterControlState()

Salva informações de estado do controle do adaptador de controle.

(Herdado de ControlAdapter)
SaveAdapterViewState()

Salva informações de estado de exibição do 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