Поделиться через


DataBoundControlAdapter Класс

Определение

Настраивает поведение DataBoundControl объекта, с которым связан адаптер для определенных запросов браузера.

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
Наследование
DataBoundControlAdapter

Примеры

В следующих примерах кода создаются и используются два производных элемента управления:

  • Класс MyDataBound , производный от DataBoundControl, является простым элементом управления сетки только для чтения.

  • Класс MyDataBoundAdapter , производный от DataBoundControlAdapter, отображает данные сетки в виде одномерного списка с разделителями строк, подходящими для небольших браузеров с экрана.

Первый пример кода использует веб-страницу для объявления MyDataBound элемента управления и экземпляра ObjectDataSource , предоставляющего данные в виде DataView объекта.

Второй пример кода содержит производные MyDataBound и MyDataBoundAdapter классы:

  • Класс MyDataBound переопределяет PerformDataBinding метод для сохранения IEnumerator коллекции для источника данных и переопределяет RenderContents метод для отрисовки источника данных в виде HTML <table>.

  • Класс MyDataBoundAdapter переопределяется PerformDataBinding , чтобы сохранить источник данных в одномерные ArrayList и добавить разделители строк. Он переопределяет RenderContents отображение ArrayList в виде списка полей, разделенных тегами <br /> .

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

Третий пример кода использует файл конфигурации, чтобы указать, что адаптер управления не используется с MyDataBound элементами управления для браузеров Microsoft Internet Explorer и MyDataBoundAdapter используется с MyDataBound элементами управления для браузеров Openwave UP.

Комментарии

Элемент управления, производный от DataBoundControl класса, привязан к источнику данных и создает его пользовательский интерфейс или дочернюю иерархию управления, перечисляя элементы в источнике данных, к которому он привязан. DataBoundControl — это абстрактный базовый класс, определяющий общие характеристики всех элементов управления, которые могут быть привязаны к источнику данных, например DataGrid элементам управления и ListBox элементами управления. Дополнительные сведения см. в разделе DataBoundControl.

Изменяет DataBoundControlAdapter поведение определенного DataBoundControl браузера или класса браузеров или действует в качестве фильтра для некоторых возможностей. Большая часть адаптируемости в поведении отрисовки может быть инкапсулирована в специализированных классах, производных от HtmlTextWriter класса. Таким образом, скорее всего, один адаптер может использоваться для ряда поведения классов браузера или включения адаптируемости в HtmlTextWriter классы может использовать адаптер элемента управления ненужным.

Каждый элемент управления имеет явные сопоставления с адаптерами с помощью файлов определения браузера, если в этих файлах есть <controlAdapter> записи. Таким образом, любой доступ к Adapter свойству DataBoundControlHttpBrowserCapabilities использует объект, извлеченный из файлов определения браузера, для выполнения поиска сопоставления адаптера с элементом управления.

Во время обработки платформа .NET Framework перехватывает вызовы методов элемента управления, который может быть конкретным браузером. Если адаптер управления подключен, платформа .NET Framework вызывает связанные методы адаптера. Дополнительные сведения см. в разделе ControlAdapter.

Метод M:System.Web.UI.WebControls.Adapters.DataBoundControlAdapter.PerformDataBinding(System.Collections.IEnumerable) привязывает перечисленную коллекцию к связанной DataBoundControl. Свойство Control возвращает строго типизированную ссылку на объект DataBoundControl.

Конструкторы

Имя Описание
DataBoundControlAdapter()

Инициализирует новый экземпляр класса DataBoundControlAdapter.

Свойства

Имя Описание
Browser

Возвращает ссылку на возможности браузера клиента, выполняющего текущий HTTP-запрос.

(Унаследовано от ControlAdapter)
Control

Извлекает строго типизированную ссылку на DataBoundControl объект, связанный с этим адаптером управления.

IsEnabled

Возвращает значение, указывающее, включен ли веб-элемент управления и все его родительские элементы управления.

(Унаследовано от WebControlAdapter)
Page

Возвращает ссылку на страницу, в которой находится элемент управления, связанный с этим адаптером.

(Унаследовано от ControlAdapter)
PageAdapter

Возвращает ссылку на адаптер страницы для страницы, в которой находится связанный элемент управления.

(Унаследовано от ControlAdapter)

Методы

Имя Описание
BeginRender(HtmlTextWriter)

Вызывается до отрисовки элемента управления. В производном классе адаптера создаются открывающиеся теги, необходимые определенному целевому объекту, но не необходимые браузерам HTML.

(Унаследовано от ControlAdapter)
CreateChildControls()

Создает целевые дочерние элементы управления для составного элемента управления.

(Унаследовано от ControlAdapter)
EndRender(HtmlTextWriter)

Вызывается после отрисовки элемента управления. В производном классе адаптера создаются закрывающие теги, необходимые определенному целевому объекту, но не нужные браузерам HTML.

(Унаследовано от ControlAdapter)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
LoadAdapterControlState(Object)

Загружает сведения о состоянии адаптера, сохраненные SaveAdapterControlState() во время предыдущего запроса на страницу, в которой находится элемент управления, связанный с этим адаптером управления.

(Унаследовано от ControlAdapter)
LoadAdapterViewState(Object)

Загружает сведения о состоянии представления адаптера, сохраненные SaveAdapterViewState() во время предыдущего запроса на страницу, в которой находится элемент управления, связанный с этим адаптером управления.

(Унаследовано от ControlAdapter)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
OnInit(EventArgs)

Переопределяет OnInit(EventArgs) метод для связанного элемента управления.

(Унаследовано от ControlAdapter)
OnLoad(EventArgs)

Переопределяет OnLoad(EventArgs) метод для связанного элемента управления.

(Унаследовано от ControlAdapter)
OnPreRender(EventArgs)

Переопределяет OnPreRender(EventArgs) метод для связанного элемента управления.

(Унаследовано от ControlAdapter)
OnUnload(EventArgs)

Переопределяет OnUnload(EventArgs) метод для связанного элемента управления.

(Унаследовано от ControlAdapter)
PerformDataBinding(IEnumerable)

Привязывает данные в источнике данных связанного DataBoundControl объекта к адаптеру управления.

Render(HtmlTextWriter)

Создает целевую разметку для элемента управления, к которому подключен адаптер элемента управления.

(Унаследовано от WebControlAdapter)
RenderBeginTag(HtmlTextWriter)

Создает начальный тег для веб-элемента управления в разметке, передаваемой в целевой браузер.

(Унаследовано от WebControlAdapter)
RenderChildren(HtmlTextWriter)

Создает целевую разметку для дочерних элементов управления в составном элементе управления, к которому подключен адаптер элемента управления.

(Унаследовано от ControlAdapter)
RenderContents(HtmlTextWriter)

Создает целевую внутреннюю разметку для веб-элемента управления, к которому подключен адаптер элемента управления.

(Унаследовано от WebControlAdapter)
RenderEndTag(HtmlTextWriter)

Создает конечный тег для веб-элемента управления в разметке, передаваемой в целевой браузер.

(Унаследовано от WebControlAdapter)
SaveAdapterControlState()

Сохраняет сведения о состоянии элемента управления для адаптера управления.

(Унаследовано от ControlAdapter)
SaveAdapterViewState()

Сохраняет сведения о состоянии представления для адаптера управления.

(Унаследовано от ControlAdapter)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел