DataBoundControlAdapter Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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
:
Třída
MyDataBound
přepíše metodu PerformDataBinding pro uložení IEnumerator kolekce pro zdroj dat a přepíše metodu RenderContents pro vykreslení zdroje dat jako HTML<table>
.Třída
MyDataBoundAdapter
přepíše PerformDataBinding uložení zdroje dat do jednorozměrného ArrayList a přidání oddělovačů řádků. Přepíše RenderContents se tak, aby se vykresloval ArrayList jako seznam polí oddělených značkami<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
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) |