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


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 элементами управления для Майкрософт браузеров Internet Explorer, и что MyDataBoundAdapter используется с MyDataBound элементами управления для браузеров Openwave UP.

Комментарии

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

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

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

Во время обработки платформа .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)

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

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