DataControlField 클래스

정의

모든 데이터 컨트롤 필드 형식의 기본 클래스로 사용되며 DetailsViewGridView와 같은 표 형식 데이터 바인딩된 컨트롤에서 데이터 열을 나타냅니다.

public ref class DataControlField abstract : System::Web::UI::IDataSourceViewSchemaAccessor, System::Web::UI::IStateManager
[System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))]
public abstract class DataControlField : System.Web.UI.IDataSourceViewSchemaAccessor, System.Web.UI.IStateManager
[<System.ComponentModel.TypeConverter(typeof(System.ComponentModel.ExpandableObjectConverter))>]
type DataControlField = class
    interface IStateManager
    interface IDataSourceViewSchemaAccessor
Public MustInherit Class DataControlField
Implements IDataSourceViewSchemaAccessor, IStateManager
상속
DataControlField
파생
특성
구현

예제

다음 코드 예제에 사용 하는 방법을 보여 줍니다. BoundField 하 고 ButtonField 개체에서 파생 되는 DataControlField에서 행을 표시 하는 DetailsView 컨트롤입니다. DetailsView 컨트롤에는 AutoGenerateRows 속성이로 설정 false에서 반환한 데이터의 하위 집합을 표시할 수 있도록는 SelectCommand 속성입니다.

<%@ page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  <form id="form1" runat="server">

    <asp:sqldatasource
      id="SqlDataSource1"
      runat="server"
      connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
      selectcommand="Select * From Employees">
    </asp:sqldatasource>

    <asp:detailsview
      id="DetailsView1"
      runat="server"
      allowpaging="True"
      datasourceid="SqlDataSource1"
      height="208px"
      width="264px"
      autogeneraterows="False">
        <fields>

          <asp:boundfield
            sortexpression="LastName"
            datafield="LastName"
            headertext="LastName">
              <itemstyle backcolor="Yellow">
              </itemstyle>
          </asp:boundfield>

          <asp:boundfield
            sortexpression="FirstName"
            datafield="FirstName"
            headertext="FirstName">
              <itemstyle forecolor="#C00000">
              </itemstyle>
          </asp:boundfield>

          <asp:buttonfield
            text="TestButton"
            buttontype="Button">
          </asp:buttonfield>

        </fields>
    </asp:detailsview>

  </form>
</body>
</html>
<%@ page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  <form id="form1" runat="server">

    <asp:sqldatasource
      id="SqlDataSource1"
      runat="server"
      connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
      selectcommand="Select * From Employees">
    </asp:sqldatasource>

    <asp:detailsview
      id="DetailsView1"
      runat="server"
      allowpaging="True"
      datasourceid="SqlDataSource1"
      height="208px"
      width="264px"
      autogeneraterows="False">
        <fields>

          <asp:boundfield
            sortexpression="LastName"
            datafield="LastName"
            headertext="LastName">
              <itemstyle backcolor="Yellow">
              </itemstyle>
          </asp:boundfield>

          <asp:boundfield
            sortexpression="FirstName"
            datafield="FirstName"
            headertext="FirstName">
              <itemstyle forecolor="#C00000">
              </itemstyle>
          </asp:boundfield>

          <asp:buttonfield
            text="TestButton"
            buttontype="Button">
          </asp:buttonfield>

        </fields>
    </asp:detailsview>

  </form>
</body>
</html>

다음 코드 예제를 확장 하는 방법에 설명 합니다 BoundField 클래스에서 사용할 수 있는 사용자 지정 바인딩된 필드를 만들려면를 GridView 제어 합니다. 비슷합니다는 CheckBoxField 클래스를 RadioButtonField 클래스의 열을 나타냅니다 true 또는 false 데이터입니다. 그러나 있지만 데이터는를 CheckBoxField 클래스에 바인딩되어 집합이 될 수 있습니다 true 또는 false 값, 데이터 집합에는 RadioButtonField 클래스에 바인딩되어 하나만 가질 수 있습니다 true 언제 든 지 값. 이 예제에서는 구현 하는 방법에 설명 합니다 ExtractValuesFromCellInitializeCell 메서드에서 파생 된 모든 클래스의 두 가지 중요 한 메서드 DataControlField합니다.

namespace Samples.AspNet.CS {

  using System;
  using System.Collections;
  using System.Collections.Specialized;
  using System.ComponentModel;
  using System.Security.Permissions;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;

  [AspNetHostingPermission(SecurityAction.Demand, 
      Level=AspNetHostingPermissionLevel.Minimal)]
  public sealed class RadioButtonField : CheckBoxField {

    public RadioButtonField() {
    }

    // Gets a default value for a basic design-time experience. 
    // Since it would look odd, even at design time, to have 
    // more than one radio button selected, make sure that none
    // are selected.
    protected override object GetDesignTimeValue() {
        return false;
    }
    // This method is called by the ExtractRowValues methods of 
    // GridView and DetailsView. Retrieve the current value of the 
    // cell from the Checked state of the Radio button.
    public override void ExtractValuesFromCell(IOrderedDictionary dictionary,
                                               DataControlFieldCell cell,
                                               DataControlRowState rowState,
                                               bool includeReadOnly)
    {

      // Determine whether the cell contains a RadioButton 
      // in its Controls collection.
      if (cell.Controls.Count > 0) {
        RadioButton radio = cell.Controls[0] as RadioButton;

        object checkedValue = null;
        if (null == radio) {
          // A RadioButton is expected, but a null is encountered.
          // Add error handling.
          throw new InvalidOperationException
              ("RadioButtonField could not extract control.");
        }
        else {
            checkedValue = radio.Checked;
        }

        // Add the value of the Checked attribute of the
        // RadioButton to the dictionary.
        if (dictionary.Contains(DataField))
          dictionary[DataField] = checkedValue;
        else
          dictionary.Add(DataField, checkedValue);
      }
    }
    // This method adds a RadioButton control and any other 
    // content to the cell's Controls collection.
    protected override void InitializeDataCell
        (DataControlFieldCell cell, DataControlRowState rowState) {

      RadioButton radio = new RadioButton();

      // If the RadioButton is bound to a DataField, add
      // the OnDataBindingField method event handler to the
      // DataBinding event.
      if (DataField.Length != 0) {
        radio.DataBinding += new EventHandler(this.OnDataBindField);
      }

      radio.Text = this.Text;

      // Because the RadioButtonField is a BoundField, it only
      // displays data. Therefore, unless the row is in edit mode,
      // the RadioButton is displayed as disabled.
      radio.Enabled = false;
      // If the row is in edit mode, enable the button.
      if ((rowState & DataControlRowState.Edit) != 0 ||
          (rowState & DataControlRowState.Insert) != 0) {
        radio.Enabled = true;
      }

      cell.Controls.Add(radio);
    }
  }
}
Imports System.Collections.Specialized
Imports System.Collections
Imports System.ComponentModel
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

Namespace Samples.AspNet.VB

    <AspNetHostingPermission(SecurityAction.Demand, _
        Level:=AspNetHostingPermissionLevel.Minimal)> _
    Public NotInheritable Class RadioButtonField
        Inherits CheckBoxField

        Public Sub New()
        End Sub

        ' Gets a default value for a basic design-time experience. Since
        ' it would look odd, even at design time, to have more than one
        ' radio button selected, make sure that none are selected.
        Protected Overrides Function GetDesignTimeValue() As Object
            Return False
        End Function

        ' This method is called by the ExtractRowValues methods of
        ' GridView and DetailsView. Retrieve the current value of the 
        ' cell from the Checked state of the Radio button.
        Public Overrides Sub ExtractValuesFromCell( _
            ByVal dictionary As IOrderedDictionary, _
            ByVal cell As DataControlFieldCell, _
            ByVal rowState As DataControlRowState, _
            ByVal includeReadOnly As Boolean)
            ' Determine whether the cell contain a RadioButton 
            ' in its Controls collection.
            If cell.Controls.Count > 0 Then
                Dim radio As RadioButton = CType(cell.Controls(0), RadioButton)

                Dim checkedValue As Object = Nothing
                If radio Is Nothing Then
                    ' A RadioButton is expected, but a null is encountered.
                    ' Add error handling.
                    Throw New InvalidOperationException( _
                        "RadioButtonField could not extract control.")
                Else
                    checkedValue = radio.Checked
                End If


                ' Add the value of the Checked attribute of the
                ' RadioButton to the dictionary.
                If dictionary.Contains(DataField) Then
                    dictionary(DataField) = checkedValue
                Else
                    dictionary.Add(DataField, checkedValue)
                End If
            End If
        End Sub
        ' This method adds a RadioButton control and any other 
        ' content to the cell's Controls collection.
        Protected Overrides Sub InitializeDataCell( _
            ByVal cell As DataControlFieldCell, _
            ByVal rowState As DataControlRowState)

            Dim radio As New RadioButton()

            ' If the RadioButton is bound to a DataField, add
            ' the OnDataBindingField method event handler to the
            ' DataBinding event.
            If DataField.Length <> 0 Then
                AddHandler radio.DataBinding, AddressOf Me.OnDataBindField
            End If

            radio.Text = Me.Text

            ' Because the RadioButtonField is a BoundField, it only 
            ' displays data. Therefore, unless the row is in edit mode, 
            ' the RadioButton is displayed as disabled.
            radio.Enabled = False
            ' If the row is in edit mode, enable the button.
            If (rowState And DataControlRowState.Edit) <> 0 _
                OrElse (rowState And DataControlRowState.Insert) <> 0 Then
                radio.Enabled = True
            End If

            cell.Controls.Add(radio)
        End Sub

    End Class

End Namespace

다음 코드 예제를 사용 하는 방법에 설명 합니다 RadioButtonField 에서 이전 예제에서는 제공 되는 클래스를 GridView 컨트롤입니다. 이 예제는 GridView 컨트롤 스포츠 팀에 대 한 데이터를 표시 합니다. 플레이어 데이터는 ID 열, 선수 이름에 대 한 열 및 팀의 주장을 식별 하는 true 또는 false 열을 포함 하는 데이터 테이블에 유지 됩니다. RadioButtonField 클래스는 팀 멤버는 현재 팀장은 표시 하는 데 사용 됩니다. GridView 팀장을 새 선택 하거나 다른 플레이어 정보를 변경 하려면 컨트롤을 편집할 수 있습니다.

<%@ page language="C#" %>
<%@ Register Tagprefix="aspSample"
             Namespace="Samples.AspNet.CS"
             Assembly="Samples.AspNet.CS" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:gridview
          id="GridView1"
          runat="server"
          allowpaging="True"
          datasourceid="SqlDataSource1"
          allowsorting="True"
          autogeneratecolumns="False"
          autogenerateeditbutton="True"
          datakeynames="AnID">
            <columns>

                <aspSample:radiobuttonfield
                  headertext="RadioButtonField"
                  text="TeamLeader"
                  datafield="TrueFalse">
                </aspSample:radiobuttonfield>

                <asp:boundfield
                  insertvisible="False"
                  sortexpression="AnID"
                  datafield="AnID"
                  readonly="True"
                  headertext="AnID">
                </asp:boundfield>

                <asp:boundfield
                  sortexpression="FirstName"
                  datafield="FirstName"
                  headertext="FirstName">
                </asp:boundfield>

                <asp:boundfield
                  sortexpression="LastName"
                  datafield="LastName"
                  headertext="LastName">
                </asp:boundfield>

              </columns>
        </asp:gridview>
        <asp:sqldatasource
          id="SqlDataSource1"
          runat="server"
          connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
          selectcommand="SELECT AnID,FirstName,LastName,TeamLeader FROM Players"
          updatecommand="UPDATE Players SET TrueFalse='false';UPDATE Players SET TrueFalse='true' WHERE AnID=@anID">
        </asp:sqldatasource>

    </form>
</body>
</html>
<%@ page language="VB" %>
<%@ Register Tagprefix="aspSample"
             Namespace="Samples.AspNet.VB"
             Assembly="Samples.AspNet.VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">

        <asp:gridview
          id="GridView1"
          runat="server"
          allowpaging="True"
          datasourceid="SqlDataSource1"
          allowsorting="True"
          autogeneratecolumns="False"
          autogenerateeditbutton="True"
          datakeynames="AnID">
            <columns>
                <aspSample:radiobuttonfield
                  headertext="RadioButtonField"
                  text="TeamLeader"
                  datafield="TrueFalse">
                </aspSample:radiobuttonfield>

                <asp:boundfield
                  insertvisible="False"
                  sortexpression="AnID"
                  datafield="AnID"
                  readonly="True"
                  headertext="AnID">
                </asp:boundfield>

                <asp:boundfield
                  sortexpression="FirstName"
                  datafield="FirstName"
                  headertext="FirstName">
                </asp:boundfield>

                <asp:boundfield
                  sortexpression="LastName"
                  datafield="LastName"
                  headertext="LastName">
                </asp:boundfield>

              </columns>
        </asp:gridview>
        <asp:sqldatasource
          id="SqlDataSource1"
          runat="server"
          connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
          selectcommand="SELECT AnID,FirstName,LastName,TeamLeader FROM Players"
          updatecommand="UPDATE Players SET TrueFalse='false';UPDATE Players SET TrueFalse='true' WHERE AnID=@anID">
        </asp:sqldatasource>

    </form>
</body>
</html>

설명

DataControlField 컨트롤 필드 형식의 모든 데이터에 대 한 기본 클래스로 사용 됩니다 클래스입니다. 데이터 컨트롤 필드는 데이터 바인딩된 컨트롤에서 방법과 유사 데이터의 필드를 나타내는 데 사용 됩니다는 DataGridColumn 개체의 열 유형을 나타냅니다는 DataGrid 제어 합니다.

파생 된 클래스를 사용 하 여 DataControlField 표시 방법을 제어할 수의 데이터 필드는 데이터 바인딩된 컨트롤에서와 같은 DetailsView 또는 GridView합니다. 다음 표에서 ASP.NET에서 제공 하는 다른 데이터 컨트롤 필드 형식을 나열 합니다.

열 필드 형식 Description
BoundField 데이터 원본에서 필드의 값을 텍스트로 표시합니다.
ButtonField 데이터 바인딩된 컨트롤에 명령 단추를 표시합니다. 컨트롤에 따라 이렇게 하면 행 또는 열을 추가 또는 제거 단추 등의 사용자 지정 단추 컨트롤을 표시할 수 있습니다.
CheckBoxField 데이터 바인딩된 컨트롤의 확인란을 표시합니다. 이 데이터 컨트롤 필드 형식은 부울 값을 사용 하 여 필드를 표시 하려면 일반적으로 사용 됩니다.
CommandField 기본 제공 명령 표시 편집을 수행 하는 단추 삽입 또는 데이터 바인딩된 컨트롤에서 작업을 삭제 합니다.
HyperLinkField 하이퍼링크로 데이터 원본의 필드의 값을 표시합니다. 이 데이터 컨트롤 필드 형식을 사용 하면 두 번째 필드 하이퍼링크의 URL에 바인딩할 수 있습니다.
ImageField 데이터 바인딩된 컨트롤에서 이미지를 표시합니다.
TemplateField 사용자 정의 내용을 지정한 템플릿에 따라 데이터 바인딩된 컨트롤에 표시 됩니다.

확장할 수도 있습니다는 DataControlFieldBoundField 사용자 고유의 데이터 컨트롤 필드 형식을 만드는 클래스입니다.

DataControlField 클래스는 사용자 인터페이스 (UI) 요소는 데이터 바인딩된 컨트롤에 표시 되는 방식을 결정 하는 많은 속성을 제공 합니다. 일부 컨트롤 UI를 렌더링 하는 경우 모든 사용 가능한 데이터 컨트롤 필드 속성을 사용 합니다. 예를 들어는 DetailsView 각 데이터 컨트롤 필드에 대 한 헤더 항목 이지만 바닥글 항목이 데이터 컨트롤 필드를 행으로 표시 하는 컨트롤에 포함 되어 있습니다. 따라서 합니다 FooterTextFooterStyle 속성에서 무시 됩니다는 DetailsView 제어 합니다. 그러나 GridView 사용을 제어 합니다 FooterTextFooterStyle 속성 경우는 ShowFooter 속성 true. 마찬가지로, 데이터 컨트롤 필드 속성에는 어떤 요소 인지에 따라 UI 요소의 프레젠테이션을 영향을 줍니다. ItemStyle 속성 필드에 항상 적용 됩니다. 형식에서 파생 하는 경우 DataControlField 컨트롤을 포함 합니다 ButtonField 또는 CheckBoxField 클래스는 ControlStyle 속성 필드에 적용 됩니다.

생성자

DataControlField()

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

속성

AccessibleHeaderText

일부 컨트롤에서 AbbreviatedText 속성 값으로 렌더링되는 텍스트를 가져오거나 설정합니다.

Control

DataControlField 개체가 연결된 데이터 컨트롤에 대한 참조를 가져옵니다.

ControlStyle

DataControlField 개체에 포함된 웹 서버 컨트롤의 스타일을 가져옵니다.

DesignMode

데이터 컨트롤 필드가 현재 디자인 타임 환경에서 표시되는지 여부를 나타내는 값을 가져옵니다.

FooterStyle

데이터 컨트롤 필드의 바닥글 스타일을 가져오거나 설정합니다.

FooterText

데이터 컨트롤 필드의 바닥글 항목에 표시되는 텍스트를 가져오거나 설정합니다.

HeaderImageUrl

데이터 컨트롤 필드의 머리글 항목에 표시되는 이미지의 URL을 가져오거나 설정합니다.

HeaderStyle

데이터 컨트롤 필드의 머리글 스타일을 가져오거나 설정합니다.

HeaderText

데이터 컨트롤 필드의 머리글 항목에 표시되는 텍스트를 가져오거나 설정합니다.

InsertVisible

데이터 바인딩된 부모 컨트롤이 삽입 모드에 있는 경우 DataControlField 개체가 표시되는지 여부를 나타내는 값을 가져옵니다.

IsTrackingViewState

DataControlField 개체가 해당 뷰 상태의 변경 내용을 저장하는지 여부를 나타내는 값을 가져옵니다.

ItemStyle

데이터 컨트롤 필드에 표시되는 텍스트 기반 내용의 스타일을 가져옵니다.

ShowHeader

데이터 컨트롤 필드의 머리글 항목이 렌더링되는지 여부를 나타내는 값을 가져오거나 설정합니다.

SortExpression

데이터 소스 컨트롤에서 데이터를 정렬하는 데 사용되는 정렬 식을 가져오거나 설정합니다.

ValidateRequestMode

컨트롤이 클라이언트 입력의 유효성을 검사하는지 여부를 지정하는 값을 가져오거나 설정합니다.

ViewState

같은 페이지에 대한 여러 개의 요청 전반에 DataControlField 개체의 뷰 상태를 저장하고 복원하는 데 사용할 수 있는 상태 정보 사전을 가져옵니다.

Visible

데이터 컨트롤 필드가 렌더링되는지 여부를 나타내는 값을 가져오거나 설정합니다.

메서드

CloneField()

현재 DataControlField에서 파생된 개체의 복사본을 만듭니다.

CopyProperties(DataControlField)

현재 DataControlField에서 파생된 개체의 속성을 지정된 DataControlField 개체로 복사합니다.

CreateField()

파생 클래스에서 재정의될 때 DataControlField에서 파생된 빈 개체를 만듭니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
ExtractValuesFromCell(IOrderedDictionary, DataControlFieldCell, DataControlRowState, Boolean)

현재 표 셀에서 데이터 컨트롤 필드의 값을 추출하여 지정된 IDictionary 컬렉션에 추가합니다.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
Initialize(Boolean, Control)

데이터 컨트롤 필드에 대한 기본 인스턴스 초기화를 수행합니다.

InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32)

셀의 컨트롤 컬렉션에 텍스트 또는 컨트롤을 추가합니다.

LoadViewState(Object)

데이터 소스 뷰를 이전에 저장된 뷰 상태로 복원합니다.

MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
OnFieldChanged()

FieldChanged 이벤트를 발생시킵니다.

SaveViewState()

페이지가 서버에 포스트백된 이후의 DataControlField 뷰 상태 변경 내용을 저장합니다.

ToString()

DataControlField 개체를 나타내는 문자열을 반환합니다.

TrackViewState()

DataControlField 개체가 뷰 상태의 변경 내용을 추적하도록 합니다. 이렇게 하면 해당 뷰 상태의 변경 내용을 컨트롤의 ViewState 속성에 저장하여 같은 페이지에 대한 여러 요청에서 일관되게 유지할 수 있습니다.

ValidateSupportsCallback()

파생 클래스에서 재정의될 때 필드에 포함된 컨트롤에서 콜백이 지원되는지를 알립니다.

명시적 인터페이스 구현

IDataSourceViewSchemaAccessor.DataSourceViewSchema

DataControlField 개체에 연결된 스키마를 가져오거나 설정합니다.

IStateManager.IsTrackingViewState

DataControlField 개체가 해당 뷰 상태의 변경 내용을 저장하는지 여부를 나타내는 값을 가져옵니다.

IStateManager.LoadViewState(Object)

데이터 컨트롤 필드를 이전에 저장된 뷰 상태로 복원합니다.

IStateManager.SaveViewState()

페이지가 서버에 포스트백된 이후의 DataControlField 뷰 상태 변경 내용을 저장합니다.

IStateManager.TrackViewState()

DataControlField 개체가 뷰 상태의 변경 내용을 추적하도록 합니다. 이렇게 하면 해당 뷰 상태의 변경 내용을 컨트롤의 ViewState 속성에 저장하여 같은 페이지에 대한 여러 요청에서 일관되게 유지할 수 있습니다.

적용 대상

추가 정보