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
- Наследование
Примеры
В следующих примерах кода создаются и используются два производных элемента управления:
Класс, производный
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) |