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 DataBoundControlje jednoduchý ovládací prvek mřížky jen pro čtení.

  • Třída MyDataBoundAdapter odvozená z DataBoundControlAdaptervykreslí data mřížky jako jednorozměrný seznam s oddělovači řádků, který je 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 třídy a MyDataBoundAdapter :

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 s ovládacími MyDataBound prvky pro Microsoft prohlížečích Internet Exploreru nebude používat žádný ovládací adaptér 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 hierarchii ovládacích prvků výčtem položek ve zdroji dat, ke kterým 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 na zdroj dat, jako DataGrid jsou ovládací prvky a ListBox . Další informace naleznete v tématu DataBoundControl.

Upraví DataBoundControlAdapter chování objektu DataBoundControl pro konkrétní prohlížeč nebo třídu prohlížečů nebo funguje jako filtr některých funkcí. Velkou část adaptability v chování vykreslování lze zapouzdřit ve specializovaných třídách, které jsou odvozeny z HtmlTextWriter třídy. Proto je pravděpodobné, že jeden adaptér může být použit pro řadu chování tříd prohlížeče nebo že zahrnutí přizpůsobivosti 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ů .browser, pokud jsou <controlAdapter> v těchto souborech položky. Proto jakýkoli přístup k Adapter vlastnosti objektu DataBoundControl používá HttpBrowserCapabilities objekt extrahovaný ze souborů definice .browser k provedení vyhledávání mapování adaptéru na řízení.

Během zpracování rozhraní .NET Framework zachytává volání metod ovládacího prvku, který může být specifický pro prohlížeč. Pokud je připojen ovládací adaptér, rozhraní .NET Framework volá přidružené metody adaptéru. Další informace naleznete v tématu ControlAdapter.

Metoda M:System.Web.UI.WebControls.Adapters.DataBoundControlAdapter.PerformDataBinding(System.Collections.IEnumerable) sváže výčet kolekce s přidruženou DataBoundControl. Vlastnost Control vrátí odkaz silného typu na DataBoundControl.

Konstruktory

DataBoundControlAdapter()

Inicializuje novou instanci DataBoundControlAdapter třídy.

Vlastnosti

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 DataBoundControl typu na objekt přidružený k tomuto ovládacímu adaptéru.

IsEnabled

Získá hodnotu označující, zda web 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

BeginRender(HtmlTextWriter)

Volá se před vykreslením ovládacího prvku. V odvozené třídě adaptéru vygeneruje otevřené značky, které jsou požadovány konkrétním cílem, ale nejsou potřeba prohlížeči 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 uzavírací značky, které jsou požadovány konkrétním cílem, ale nejsou potřeba prohlížeči HTML.

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

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

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

Slouží jako výchozí hashovací funkce.

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

Získá aktuální Type instanci.

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

Načte informace o stavu ovládacího prvku adaptéru, které byly uloženy 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, které byly uloženy 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 Objectsouboru .

(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)

Sváže data ve zdroji dat přidruženého DataBoundControl objektu s adaptérem ovládacího prvku.

Render(HtmlTextWriter)

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

(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řenáší do cílového prohlížeče.

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

Vygeneruje značky specifické pro cíl podřízených ovládacích prvků ve složeném ovládacím prvku, ke kterému je připojen adaptér ovládacího prvku.

(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 připojen adaptér ovládacího prvku.

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

Vytvoří koncovou značku webového ovládacího prvku ve značkách, které se přenesou 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 zobrazení pro adaptér ovládacího prvku.

(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é