다음을 통해 공유


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

예제

다음 코드 예제에서는 두 개의 파생된 컨트롤을 만들고 사용합니다.

  • 파생된 DataBoundControl클래스는 MyDataBound 간단한 읽기 전용 그리드 컨트롤입니다.

  • 파생된 DataBoundControlAdapter클래스는 MyDataBoundAdapter 그리드 데이터를 작은 화면 브라우저에 적합한 행 구분 기호가 있는 1차원 목록으로 렌더링합니다.

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

두 번째 코드 예제는 파생 MyDataBound 클래스와 MyDataBoundAdapter 클래스를 포함합니다.

  • 클래스는 MyDataBound 데이터 원본에 대한 컬렉션을 저장 IEnumerator 하기 위해 메서드를 재정 PerformDataBinding 의하고 데이터 원본을 HTML<table>로 렌더링하는 메서드를 재정의합니다RenderContents.

  • 이 클래스는 MyDataBoundAdapter 데이터 원본을 PerformDataBinding 1차원 ArrayList 으로 저장하고 행 구분 기호를 추가하도록 재정의합니다. 태그로 구분 <br /> 된 필드 목록으로 렌더링 ArrayList 하도록 재정 RenderContents 의합니다.

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

세 번째 코드 예제에서는 구성 파일을 사용하여 Microsoft Internet Explorer 브라우저에 대한 컨트롤과 함께 MyDataBound 사용할 컨트롤 어댑터가 없고 Openwave UP 브라우저용 컨트롤과 함께 MyDataBound 사용되도록 MyDataBoundAdapter 지정합니다.

설명

클래스에서 DataBoundControl 파생된 컨트롤은 데이터 원본에 바인딩되고 바인딩된 데이터 원본의 항목을 열거하여 사용자 인터페이스 또는 자식 컨트롤 계층 구조를 생성합니다. DataBoundControl 는 데이터 원본(예 DataGridListBox : 컨트롤)에 바인딩할 수 있는 모든 컨트롤의 공통 특성을 정의하는 추상 기본 클래스입니다. 자세한 내용은 DataBoundControl를 참조하세요.

A DataBoundControlAdapter 는 특정 브라우저 또는 브라우저 클래스의 DataBoundControl 동작을 수정하거나 일부 기능에 대한 필터 역할을 합니다. 렌더링 동작의 대부분의 적응성은 클래스에서 HtmlTextWriter 파생되는 특수 클래스에 캡슐화될 수 있습니다. 따라서 여러 브라우저 클래스 동작에 단일 어댑터를 사용할 수 있거나 클래스에 HtmlTextWriter 적응성을 포함하면 컨트롤 어댑터를 불필요하게 사용할 수 있습니다.

각 컨트롤에는 이러한 파일에 항목이 있는 경우 .browser 정의 파일을 통해 어댑터에 대한 명시적 매핑이 있습니다 <controlAdapter> . 따라서 속성 DataBoundControlAdapter 대한 액세스는 .browser 정의 파일에서 추출된 개체를 사용하여 HttpBrowserCapabilities 제어할 어댑터의 매핑에 대한 조회를 수행합니다.

처리하는 동안 .NET Framework는 브라우저별일 수 있는 컨트롤의 메서드에 대한 호출을 가로채게 됩니다. 컨트롤 어댑터가 연결된 경우 .NET Framework는 연결된 어댑터 메서드를 호출합니다. 자세한 내용은 ControlAdapter를 참조하세요.

M:System.Web.UI.WebControls.Adapters.DataBoundControlAdapter.PerformDataBinding(System.Collections.IEnumerable) 메서드는 열거 가능한 컬렉션을 연결된 DataBoundControl컬렉션에 바인딩합니다. 속성은 Control 강력한 형식의 참조를 반환합니다 DataBoundControl.

생성자

Name Description
DataBoundControlAdapter()

DataBoundControlAdapter 클래스의 새 인스턴스를 초기화합니다.

속성

Name Description
Browser

현재 HTTP 요청을 만드는 클라이언트의 브라우저 기능에 대한 참조를 가져옵니다.

(다음에서 상속됨 ControlAdapter)
Control

이 컨트롤 어댑터와 연결된 개체에 대한 강력한 형식의 DataBoundControl 참조를 검색합니다.

IsEnabled

웹 컨트롤과 모든 부모 컨트롤을 사용할 수 있는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 WebControlAdapter)
Page

이 어댑터와 연결된 컨트롤이 있는 페이지에 대한 참조를 가져옵니다.

(다음에서 상속됨 ControlAdapter)
PageAdapter

연결된 컨트롤이 있는 페이지의 페이지 어댑터에 대한 참조를 가져옵니다.

(다음에서 상속됨 ControlAdapter)

메서드

Name Description
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)

적용 대상

추가 정보