DataBoundControlAdapter Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyesuaikan perilaku DataBoundControl objek yang dikaitkan dengan adaptor untuk permintaan browser tertentu.
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
- Warisan
Contoh
Contoh kode berikut membuat dan menggunakan dua kontrol turunan:
Kelas
MyDataBound, berasal dari DataBoundControl, adalah kontrol kisi baca-saja sederhana.Kelas
MyDataBoundAdapter, berasal dari DataBoundControlAdapter, merender data kisi sebagai daftar satu dimensi dengan pemisah baris, cocok untuk browser layar kecil.
Contoh kode pertama menggunakan halaman Web untuk mendeklarasikan MyDataBound kontrol dan instans ObjectDataSource yang menyediakan data dalam bentuk DataView objek.
Contoh kode kedua berisi turunan MyDataBound dan MyDataBoundAdapter kelas:
Kelas
MyDataBoundmengambil alih PerformDataBinding metode untuk menyimpan IEnumerator koleksi untuk sumber data, dan mengambil alih RenderContents metode untuk merender sumber data sebagai HTML<table>.Kelas
MyDataBoundAdaptermengambil alih PerformDataBinding untuk menyimpan sumber data ke pemisah satu dimensi ArrayList dan menambahkan pemisah baris. Ini mengambil alih RenderContents untuk merender ArrayList sebagai daftar bidang yang dipisahkan oleh<br />tag.
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
Contoh kode ketiga menggunakan file konfigurasi untuk menentukan bahwa tidak ada adaptor kontrol yang akan digunakan dengan MyDataBound kontrol untuk browser Microsoft Internet Explorer, dan bahwa MyDataBoundAdapter digunakan dengan MyDataBound kontrol untuk browser Openwave UP.
Keterangan
Kontrol yang berasal dari DataBoundControl kelas terikat ke sumber data dan menghasilkan antarmuka pengguna atau hierarki kontrol anaknya dengan menghitung item di sumber data yang terikat. DataBoundControl adalah kelas dasar abstrak yang menentukan karakteristik umum dari semua kontrol yang dapat terikat ke sumber data, seperti DataGrid kontrol dan ListBox . Untuk informasi selengkapnya, lihat DataBoundControl .
Memodifikasi DataBoundControlAdapter perilaku DataBoundControl untuk browser atau kelas browser tertentu, atau bertindak sebagai filter pada beberapa kemampuan. Sebagian besar kemampuan beradaptasi dalam perilaku penyajian dapat dienkapsulasi dalam kelas khusus yang berasal dari HtmlTextWriter kelas . Oleh karena itu, kemungkinan adaptor tunggal dapat digunakan untuk sejumlah perilaku kelas browser atau bahwa penyertaan kemampuan beradaptasi di HtmlTextWriter kelas dapat membuat penggunaan adaptor kontrol tidak perlu.
Setiap kontrol memiliki pemetaan eksplisit ke adaptor melalui file definisi .browser, jika ada <controlAdapter> entri dalam file-file ini. Dengan demikian, setiap akses ke Adapter properti dari DataBoundControl menggunakan objek yang HttpBrowserCapabilities diekstrak dari file definisi .browser untuk melakukan pencarian untuk pemetaan adaptor yang akan dikontrol.
Selama pemrosesan, .NET Framework mencegat panggilan ke metode kontrol yang dapat menjadi browser khusus. Jika adaptor kontrol dilampirkan, .NET Framework memanggil metode adaptor terkait. Untuk informasi selengkapnya, lihat ControlAdapter .
Metode M:System.Web.UI.WebControls.Adapters.DataBoundControlAdapter.PerformDataBinding(System.Collections.IEnumerable) mengikat koleksi yang dapat dihitung ke DataBoundControl. Properti Control mengembalikan referensi yang ditik dengan kuat ke DataBoundControl.
Konstruktor
| Nama | Deskripsi |
|---|---|
| DataBoundControlAdapter() |
Menginisialisasi instans baru dari kelas DataBoundControlAdapter. |
Properti
| Nama | Deskripsi |
|---|---|
| Browser |
Mendapatkan referensi ke kemampuan browser klien yang membuat permintaan HTTP saat ini. (Diperoleh dari ControlAdapter) |
| Control |
Mengambil referensi yang sangat diketik ke objek yang DataBoundControl terkait dengan adaptor kontrol ini. |
| IsEnabled |
Mendapatkan nilai yang menunjukkan apakah kontrol Web dan semua kontrol induknya diaktifkan. (Diperoleh dari WebControlAdapter) |
| Page |
Mendapatkan referensi ke halaman tempat kontrol yang terkait dengan adaptor ini berada. (Diperoleh dari ControlAdapter) |
| PageAdapter |
Mendapatkan referensi ke adaptor halaman untuk halaman tempat kontrol terkait berada. (Diperoleh dari ControlAdapter) |
Metode
| Nama | Deskripsi |
|---|---|
| BeginRender(HtmlTextWriter) |
Dipanggil sebelum penyajian kontrol. Dalam kelas adaptor turunan, menghasilkan tag pembuka yang diperlukan oleh target tertentu tetapi tidak diperlukan oleh browser HTML. (Diperoleh dari ControlAdapter) |
| CreateChildControls() |
Membuat kontrol turunan khusus target untuk kontrol komposit. (Diperoleh dari ControlAdapter) |
| EndRender(HtmlTextWriter) |
Dipanggil setelah penyajian kontrol. Dalam kelas adaptor turunan, menghasilkan tag penutup yang diperlukan oleh target tertentu tetapi tidak diperlukan oleh browser HTML. (Diperoleh dari ControlAdapter) |
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| LoadAdapterControlState(Object) |
Memuat informasi status kontrol adaptor yang disimpan selama SaveAdapterControlState() permintaan sebelumnya ke halaman tempat kontrol yang terkait dengan adaptor kontrol ini berada. (Diperoleh dari ControlAdapter) |
| LoadAdapterViewState(Object) |
Memuat informasi status tampilan adaptor yang disimpan oleh SaveAdapterViewState() selama permintaan sebelumnya ke halaman tempat kontrol yang terkait dengan adaptor kontrol ini berada. (Diperoleh dari ControlAdapter) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| OnInit(EventArgs) |
Mengambil alih OnInit(EventArgs) metode untuk kontrol terkait. (Diperoleh dari ControlAdapter) |
| OnLoad(EventArgs) |
Mengambil alih OnLoad(EventArgs) metode untuk kontrol terkait. (Diperoleh dari ControlAdapter) |
| OnPreRender(EventArgs) |
Mengambil alih OnPreRender(EventArgs) metode untuk kontrol terkait. (Diperoleh dari ControlAdapter) |
| OnUnload(EventArgs) |
Mengambil alih OnUnload(EventArgs) metode untuk kontrol terkait. (Diperoleh dari ControlAdapter) |
| PerformDataBinding(IEnumerable) |
Mengikat data dalam sumber data objek terkait DataBoundControl ke adaptor kontrol. |
| Render(HtmlTextWriter) |
Menghasilkan markup khusus target untuk kontrol tempat adaptor kontrol dilampirkan. (Diperoleh dari WebControlAdapter) |
| RenderBeginTag(HtmlTextWriter) |
Membuat tag awal untuk kontrol Web dalam markup yang dikirimkan ke browser target. (Diperoleh dari WebControlAdapter) |
| RenderChildren(HtmlTextWriter) |
Menghasilkan markup khusus target untuk kontrol anak dalam kontrol komposit tempat adaptor kontrol dilampirkan. (Diperoleh dari ControlAdapter) |
| RenderContents(HtmlTextWriter) |
Menghasilkan markup dalam khusus target untuk kontrol Web tempat adaptor kontrol dilampirkan. (Diperoleh dari WebControlAdapter) |
| RenderEndTag(HtmlTextWriter) |
Membuat tag akhir untuk kontrol Web dalam markup yang dikirimkan ke browser target. (Diperoleh dari WebControlAdapter) |
| SaveAdapterControlState() |
Menyimpan informasi status kontrol untuk adaptor kontrol. (Diperoleh dari ControlAdapter) |
| SaveAdapterViewState() |
Menyimpan informasi status tampilan untuk adaptor kontrol. (Diperoleh dari ControlAdapter) |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |