다음을 통해 공유


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, 작은 화면 브라우저에 적합 한 행 구분선이 있는 1 차원 목록으로 표 형태 데이터를 렌더링 합니다.

첫 번째 코드 예제에서는 웹 페이지를 사용 하 여 선언 하는 MyDataBound 컨트롤과 인스턴스의 ObjectDataSource 의 형태로 데이터를 제공 하는 DataView 개체.

두 번째 코드 예제에서는 포함 된 파생 MyDataBoundMyDataBoundAdapter 클래스:

  • MyDataBound 재정의 클래스를 PerformDataBinding 저장 하는 방법은 IEnumerator 데이터 원본 및 재정의 대 한 컬렉션을 RenderContents HTML 데이터 소스를 렌더링 하는 방법 <table>.

  • MyDataBoundAdapter 재정의 클래스 PerformDataBinding 를 1 차원 데이터 소스를 저장 하려면 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 하 고 Microsoft Internet Explorer 브라우저 컨트롤을 MyDataBoundAdapter 와 함께 사용 됩니다 MyDataBound Openwave를 브라우저에 대 한 제어 합니다.

설명

파생 되는 컨트롤을 DataBoundControl 클래스는 데이터 원본에 바인딩되고가 바인딩되는 데이터 소스의 항목을 열거 하 여 해당 사용자 인터페이스 또는 자식 컨트롤 계층 구조를 생성 합니다. DataBoundControl 같은 데이터 원본에 바인딩될 수 있는 모든 컨트롤의 일반적인 특성을 정의 하는 추상 기본 클래스를 DataGridListBox 컨트롤입니다. 자세한 내용은 DataBoundControl를 참조하세요.

A 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)

적용 대상

추가 정보