Udostępnij za pośrednictwem


DataBoundControlAdapter Klasa

Definicja

Dostosowuje zachowanie DataBoundControl obiektu, z którym jest skojarzona karta dla określonych żądań przeglądarki.

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
Dziedziczenie
DataBoundControlAdapter

Przykłady

W poniższych przykładach kodu są tworzone i używane dwie pochodne kontrolki:

  • Klasa pochodząca MyDataBound z DataBoundControlklasy jest prostą kontrolką siatki tylko do odczytu.

  • Klasa pochodząca MyDataBoundAdapter z DataBoundControlAdapterklasy renderuje dane siatki jako jednowymiarową listę z separatorami wierszy, odpowiednią dla przeglądarek z małym ekranem.

Pierwszy przykład kodu używa strony sieci Web do deklarowania MyDataBound kontrolki i wystąpienia ObjectDataSource , które dostarcza dane w postaci DataView obiektu.

Drugi przykład kodu zawiera klasy pochodne MyDataBound i 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

W trzecim przykładzie kodu użyto pliku konfiguracji, aby określić, że żadna karta sterowa nie ma być używana z kontrolkami MyDataBound dla przeglądarek Microsoft Internet Explorer, a element MyDataBoundAdapter jest używany z kontrolkami MyDataBound dla przeglądarek Openwave UP.

Uwagi

Kontrolka pochodząca z klasy jest powiązana ze DataBoundControl źródłem danych i generuje jej interfejs użytkownika lub hierarchię sterowania podrzędnego, wyliczając elementy w źródle danych, do którego jest powiązana. DataBoundControl jest abstrakcyjną klasą bazową, która definiuje wspólne cechy wszystkich kontrolek, które mogą być powiązane ze źródłem danych, takim jak kontrolki DataGrid i ListBox . Aby uzyskać więcej informacji, zobacz DataBoundControl.

Element DataBoundControlAdapter modyfikuje zachowanie DataBoundControl elementu dla określonej przeglądarki lub klasy przeglądarek lub działa jako filtr niektórych funkcji. Wiele możliwości dostosowania w zachowaniu renderowania można hermetyzować w wyspecjalizowanych klasach, które pochodzą z HtmlTextWriter klasy. W związku z tym prawdopodobnie można użyć pojedynczej karty dla wielu zachowań klasy przeglądarki lub włączenia dostosowania w HtmlTextWriter klasach może niepotrzebnie korzystać z adaptera sterującego.

Każda kontrolka ma jawne mapowania kart za pośrednictwem plików definicji przeglądarki, jeśli w tych plikach znajdują się <controlAdapter> wpisy. W związku z tym każdy dostęp do Adapter właściwości obiektu DataBoundControl używa HttpBrowserCapabilities obiektu wyodrębnionego z plików definicji przeglądarki w celu wyszukania mapowania adaptera do sterowania.

Podczas przetwarzania .NET Framework przechwytuje wywołania do metod kontrolki, która może być specyficzna dla przeglądarki. Jeśli karta sterowa jest dołączona, .NET Framework wywołuje skojarzone metody adaptera. Aby uzyskać więcej informacji, zobacz ControlAdapter.

Metoda M:System.Web.UI.WebControls.Adapters.DataBoundControlAdapter.PerformDataBinding(System.Collections.IEnumerable) wiąże kolekcję wyliczalną ze skojarzonym elementem DataBoundControl. Właściwość Control zwraca silnie typizowane odwołanie do obiektu DataBoundControl.

Konstruktory

DataBoundControlAdapter()

Inicjuje nowe wystąpienie klasy DataBoundControlAdapter.

Właściwości

Browser

Pobiera odwołanie do możliwości przeglądarki klienta wysyłającego bieżące żądanie HTTP.

(Odziedziczone po ControlAdapter)
Control

Pobiera silnie typizowane odwołanie do obiektu skojarzonego DataBoundControl z tą kartą kontrolną.

IsEnabled

Pobiera wartość wskazującą, czy kontrolka Internetowa i wszystkie jej kontrolki nadrzędne są włączone.

(Odziedziczone po WebControlAdapter)
Page

Pobiera odwołanie do strony, na której znajduje się kontrolka skojarzona z tą kartą.

(Odziedziczone po ControlAdapter)
PageAdapter

Pobiera odwołanie do karty strony dla strony, na której znajduje się skojarzona kontrolka.

(Odziedziczone po ControlAdapter)

Metody

BeginRender(HtmlTextWriter)

Wywoływane przed renderowaniem kontrolki. W klasie karty pochodnej generuje tagi otwierające, które są wymagane przez określony element docelowy, ale nie jest wymagany przez przeglądarki HTML.

(Odziedziczone po ControlAdapter)
CreateChildControls()

Tworzy kontrolki podrzędne specyficzne dla elementu docelowego dla kontrolki złożonej.

(Odziedziczone po ControlAdapter)
EndRender(HtmlTextWriter)

Wywoływana po renderowaniu kontrolki. W klasie pochodnej karty generuje tagi zamykające, które są wymagane przez określony element docelowy, ale nie jest wymagany przez przeglądarki HTML.

(Odziedziczone po ControlAdapter)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
LoadAdapterControlState(Object)

Ładuje informacje o stanie kontrolki karty, które zostały zapisane SaveAdapterControlState() podczas poprzedniego żądania na stronie, na której znajduje się kontrolka skojarzona z tą kartą sterowania.

(Odziedziczone po ControlAdapter)
LoadAdapterViewState(Object)

Ładuje informacje o stanie widoku karty, które zostały zapisane SaveAdapterViewState() podczas poprzedniego żądania na stronie, na której znajduje się kontrolka skojarzona z tą kartą sterowania.

(Odziedziczone po ControlAdapter)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
OnInit(EventArgs)

Zastępuje metodę OnInit(EventArgs) skojarzonej kontrolki.

(Odziedziczone po ControlAdapter)
OnLoad(EventArgs)

Zastępuje metodę OnLoad(EventArgs) skojarzonej kontrolki.

(Odziedziczone po ControlAdapter)
OnPreRender(EventArgs)

Zastępuje metodę OnPreRender(EventArgs) skojarzonej kontrolki.

(Odziedziczone po ControlAdapter)
OnUnload(EventArgs)

Zastępuje metodę OnUnload(EventArgs) skojarzonej kontrolki.

(Odziedziczone po ControlAdapter)
PerformDataBinding(IEnumerable)

Wiąże dane w źródle danych skojarzonego DataBoundControl obiektu z adapterem sterującym.

Render(HtmlTextWriter)

Generuje znacznik specyficzny dla obiektu docelowego dla kontrolki, do której jest dołączona karta sterowania.

(Odziedziczone po WebControlAdapter)
RenderBeginTag(HtmlTextWriter)

Tworzy tag początku kontrolki internetowej w znaczniku, który jest przesyłany do przeglądarki docelowej.

(Odziedziczone po WebControlAdapter)
RenderChildren(HtmlTextWriter)

Generuje znaczniki specyficzne dla elementu docelowego dla kontrolek podrzędnych w kontrolce złożonej, do której jest dołączony adapter sterujący.

(Odziedziczone po ControlAdapter)
RenderContents(HtmlTextWriter)

Generuje wewnętrzny znacznik specyficzny dla określonego obiektu docelowego dla kontrolki internetowej, do której jest dołączona karta sterowania.

(Odziedziczone po WebControlAdapter)
RenderEndTag(HtmlTextWriter)

Tworzy tag końcowy kontrolki Internetowej w znaczniku, który jest przesyłany do przeglądarki docelowej.

(Odziedziczone po WebControlAdapter)
SaveAdapterControlState()

Zapisuje informacje o stanie sterowania dla karty sterującej.

(Odziedziczone po ControlAdapter)
SaveAdapterViewState()

Zapisuje informacje o stanie widoku dla karty sterującej.

(Odziedziczone po ControlAdapter)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też