次の方法で共有


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

次のコード例では、2 つの派生コントロールを作成して使用します。

  • からDataBoundControl派生した クラスはMyDataBound、単純な読み取り専用グリッド コントロールです。

  • からDataBoundControlAdapter派生した クラスはMyDataBoundAdapter、小さな画面ブラウザーに適した行区切り記号を持つ 1 次元リストとしてグリッド データをレンダリングします。

最初のコード例では、Web ページを使用して、オブジェクトの形式でデータを提供する コントロールと のインスタンスObjectDataSourceDataView宣言MyDataBoundします。

2 番目のコード例には、派生クラスと MyDataBoundAdapter クラスがMyDataBound含まれています。

  • クラスは MyDataBound 、 メソッドを PerformDataBinding オーバーライドしてデータ ソースのコレクションを IEnumerator 保存し、 メソッドを RenderContents オーバーライドしてデータ ソースを HTML <table>としてレンダリングします。

  • クラスは MyDataBoundAdapterPerformDataBinding オーバーライドして、データ ソースを 1 次元 ArrayList に保存し、行区切り記号を追加します。 をオーバーライドRenderContentsして、タグで<br />区切られたフィールドの一覧として をレンダリングArrayListします。

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

3 番目のコード例では、構成ファイルを使用して、Microsoft Internet Explorer ブラウザーのコントロールでMyDataBoundコントロール アダプターを使用せず、 を Openwave UP ブラウザーのコントロールでMyDataBound使用するようにMyDataBoundAdapter指定します。

注釈

クラスから DataBoundControl 派生したコントロールはデータ ソースにバインドされ、バインド先のデータ ソース内の項目を列挙することによって、そのユーザー インターフェイスまたは子コントロール階層が生成されます。 DataBoundControlは、 コントロールや ListBox コントロールなどDataGrid、データ ソースにバインドできるすべてのコントロールの共通特性を定義する抽象基本クラスです。 詳細については、「DataBoundControl」を参照してください。

DataBoundControlAdapter 、特定のブラウザーまたはブラウザーの DataBoundControl クラスの の動作を変更するか、機能のフィルターとして機能します。 レンダリング動作の適応性の多くは、 クラスから派生した特殊なクラスに HtmlTextWriter カプセル化できます。 したがって、1 つのアダプターを多数のブラウザー クラスの動作に使用できる場合や、クラスに適応性 HtmlTextWriter を含めると、コントロール アダプターを不要に使用できる可能性があります。

各コントロールには、.browser 定義ファイルを介したアダプターへの明示的なマッピングがあります (これらのファイルにエントリがある <controlAdapter> 場合)。 したがって、 の DataBoundControl プロパティへのAdapterアクセスでは、.browser 定義ファイルから抽出された オブジェクトを使用HttpBrowserCapabilitiesして、制御するアダプターのマッピングの検索を実行します。

処理中、.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

Web コントロールおよびそのすべての親コントロールが有効になっているかどうかを示す値を取得します。

(継承元 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)

対象のブラウザーに送信されるマークアップ内に Web コントロールの開始タグを作成します。

(継承元 WebControlAdapter)
RenderChildren(HtmlTextWriter)

コントロール アダプターの割り当て先である複合コントロールに含まれる子コントロールのターゲット固有のマークアップを生成します。

(継承元 ControlAdapter)
RenderContents(HtmlTextWriter)

コントロール アダプターの割り当て先である Web コントロールのターゲット固有の内部マークアップを生成します。

(継承元 WebControlAdapter)
RenderEndTag(HtmlTextWriter)

対象のブラウザーに送信されるマークアップ内に Web コントロールの終了タグを作成します。

(継承元 WebControlAdapter)
SaveAdapterControlState()

コントロール アダプターのコントロール状態情報を保存します。

(継承元 ControlAdapter)
SaveAdapterViewState()

コントロール アダプターのビューステート情報を保存します。

(継承元 ControlAdapter)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください