Sdílet prostřednictvím


DataBoundControlAdapter Třída

Definice

Přizpůsobí chování objektu DataBoundControl , ke kterému je adaptér přidružený pro konkrétní požadavky prohlížeče.

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
Dědičnost
DataBoundControlAdapter

Příklady

Následující příklady kódu vytvářejí a používají dva odvozené ovládací prvky:

  • Třída MyDataBound odvozená z DataBoundControl, je jednoduchý ovládací prvek mřížky jen pro čtení.

  • Třída MyDataBoundAdapter odvozená z DataBoundControlAdapter, vykresluje data mřížky jako jednorozměrný seznam s oddělovači řádků, vhodný pro malé prohlížeče obrazovky.

První příklad kódu používá webovou stránku k deklaraci MyDataBound ovládacího prvku a instance ObjectDataSource , která poskytuje data ve formě objektu DataView .

Druhý příklad kódu obsahuje odvozené MyDataBound a MyDataBoundAdapter třídy:

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

Třetí příklad kódu používá konfigurační soubor k určení, že se nemá používat žádný řídicí adaptér s ovládacími MyDataBound prvky pro prohlížeče Microsoft Internet Explorer a že MyDataBoundAdapter se používá s ovládacími MyDataBound prvky pro prohlížeče Openwave UP.

Poznámky

Ovládací prvek odvozený z DataBoundControl třídy je vázán na zdroj dat a generuje jeho uživatelské rozhraní nebo podřízenou řídicí hierarchii výčet položek ve zdroji dat, ke kterému je vázán. DataBoundControl je abstraktní základní třída, která definuje společné charakteristiky všech ovládacích prvků, které mohou být vázány ke zdroji dat, jako jsou ovládací DataGrid prvky a ListBox ovládací prvky. Další informace najdete na webu DataBoundControl.

Upraví DataBoundControlAdapter chování konkrétního DataBoundControl prohlížeče nebo třídy prohlížečů nebo funguje jako filtr některých funkcí. Velká část adaptability při vykreslování chování lze zapouzdřovat ve specializovaných třídách, které jsou odvozeny od HtmlTextWriter třídy. Proto je pravděpodobné, že jeden adaptér lze použít pro řadu chování třídy prohlížeče nebo že zahrnutí adaptability do HtmlTextWriter tříd může použití řídicího adaptéru zbytečné.

Každý ovládací prvek má explicitní mapování na adaptéry prostřednictvím definičních souborů prohlížeče, pokud jsou <controlAdapter> v těchto souborech položky. Proto jakýkoli přístup k Adapter vlastnosti DataBoundControl používá HttpBrowserCapabilities objekt extrahovaný ze souborů definic prohlížeče k provedení vyhledávání mapování adaptéru na řízení.

Během zpracování rozhraní .NET Framework zachycuje volání metod ovládacího prvku, který by mohl být specifický pro prohlížeč. Pokud je připojený řídicí adaptér, rozhraní .NET Framework volá přidružené metody adaptéru. Další informace najdete na webu ControlAdapter.

Metoda M:System.Web.UI.WebControls.Adapters.DataBoundControlAdapter.PerformDataBinding(System.Collections.IEnumerable) vytvoří vazbu na enumerable kolekci s přidruženou DataBoundControl. Vlastnost Control vrátí silného typu odkaz na DataBoundControl.

Konstruktory

Name Description
DataBoundControlAdapter()

Inicializuje novou instanci DataBoundControlAdapter třídy.

Vlastnosti

Name Description
Browser

Získá odkaz na možnosti prohlížeče klienta, který provádí aktuální požadavek HTTP.

(Zděděno od ControlAdapter)
Control

Načte odkaz silného typu na objekt přidružený k tomuto adaptéru DataBoundControl ovládacího prvku.

IsEnabled

Získá hodnotu určující, zda webový ovládací prvek a všechny jeho nadřazené ovládací prvky jsou povoleny.

(Zděděno od WebControlAdapter)
Page

Získá odkaz na stránku, kde se nachází ovládací prvek přidružený k tomuto adaptéru.

(Zděděno od ControlAdapter)
PageAdapter

Získá odkaz na adaptér stránky pro stránku, kde se nachází přidružený ovládací prvek.

(Zděděno od ControlAdapter)

Metody

Name Description
BeginRender(HtmlTextWriter)

Volá se před vykreslováním ovládacího prvku. V odvozené třídě adaptéru vygeneruje otevírání značek, které jsou vyžadovány konkrétním cílem, ale nejsou potřeba v prohlížečích HTML.

(Zděděno od ControlAdapter)
CreateChildControls()

Vytvoří podřízené ovládací prvky specifické pro cíl pro složený ovládací prvek.

(Zděděno od ControlAdapter)
EndRender(HtmlTextWriter)

Volá se po vykreslení ovládacího prvku. V odvozené třídě adaptéru vygeneruje koncové značky, které jsou vyžadovány konkrétním cílem, ale nejsou potřeba v prohlížečích HTML.

(Zděděno od ControlAdapter)
Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
LoadAdapterControlState(Object)

Načte informace o stavu řízení adaptéru uložené SaveAdapterControlState() během předchozího požadavku na stránku, kde se nachází ovládací prvek přidružený k tomuto adaptéru ovládacího prvku.

(Zděděno od ControlAdapter)
LoadAdapterViewState(Object)

Načte informace o stavu zobrazení adaptéru uložené SaveAdapterViewState() během předchozího požadavku na stránku, kde se nachází ovládací prvek přidružený k tomuto adaptéru ovládacího prvku.

(Zděděno od ControlAdapter)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
OnInit(EventArgs)

Přepíše metodu OnInit(EventArgs) přidruženého ovládacího prvku.

(Zděděno od ControlAdapter)
OnLoad(EventArgs)

Přepíše metodu OnLoad(EventArgs) přidruženého ovládacího prvku.

(Zděděno od ControlAdapter)
OnPreRender(EventArgs)

Přepíše metodu OnPreRender(EventArgs) přidruženého ovládacího prvku.

(Zděděno od ControlAdapter)
OnUnload(EventArgs)

Přepíše metodu OnUnload(EventArgs) přidruženého ovládacího prvku.

(Zděděno od ControlAdapter)
PerformDataBinding(IEnumerable)

Vytvoří vazbu dat ve zdroji dat přidruženého DataBoundControl objektu k adaptéru ovládacího prvku.

Render(HtmlTextWriter)

Vygeneruje cílovou značku pro ovládací prvek, ke kterému je adaptér ovládacího prvku připojen.

(Zděděno od WebControlAdapter)
RenderBeginTag(HtmlTextWriter)

Vytvoří počáteční značku webového ovládacího prvku v kódu, který se přenese do cílového prohlížeče.

(Zděděno od WebControlAdapter)
RenderChildren(HtmlTextWriter)

Vygeneruje značku specifickou pro cíl pro podřízené ovládací prvky ve složeném ovládacím prvku, ke kterému je adaptér ovládacího prvku připojen.

(Zděděno od ControlAdapter)
RenderContents(HtmlTextWriter)

Vygeneruje vnitřní kód specifický pro cíl webového ovládacího prvku, ke kterému je adaptér ovládacího prvku připojen.

(Zděděno od WebControlAdapter)
RenderEndTag(HtmlTextWriter)

Vytvoří koncovou značku webového ovládacího prvku v kódu, který se přenese do cílového prohlížeče.

(Zděděno od WebControlAdapter)
SaveAdapterControlState()

Uloží informace o stavu ovládacího prvku pro adaptér ovládacího prvku.

(Zděděno od ControlAdapter)
SaveAdapterViewState()

Uloží informace o stavu řídicího adaptéru.

(Zděděno od ControlAdapter)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro

Viz také