DataControlField 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
모든 데이터 컨트롤 필드 형식의 기본 클래스로 사용되며 DetailsView 및 GridView와 같은 표 형식 데이터 바인딩된 컨트롤에서 데이터 열을 나타냅니다.
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
언제 든 지 값. 이 예제에서는 구현 하는 방법에 설명 합니다 ExtractValuesFromCell 및 InitializeCell 메서드에서 파생 된 모든 클래스의 두 가지 중요 한 메서드 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 | 사용자 정의 내용을 지정한 템플릿에 따라 데이터 바인딩된 컨트롤에 표시 됩니다. |
확장할 수도 있습니다는 DataControlField 및 BoundField 사용자 고유의 데이터 컨트롤 필드 형식을 만드는 클래스입니다.
DataControlField 클래스는 사용자 인터페이스 (UI) 요소는 데이터 바인딩된 컨트롤에 표시 되는 방식을 결정 하는 많은 속성을 제공 합니다. 일부 컨트롤 UI를 렌더링 하는 경우 모든 사용 가능한 데이터 컨트롤 필드 속성을 사용 합니다. 예를 들어는 DetailsView 각 데이터 컨트롤 필드에 대 한 헤더 항목 이지만 바닥글 항목이 데이터 컨트롤 필드를 행으로 표시 하는 컨트롤에 포함 되어 있습니다. 따라서 합니다 FooterText 및 FooterStyle 속성에서 무시 됩니다는 DetailsView 제어 합니다. 그러나 GridView 사용을 제어 합니다 FooterText 및 FooterStyle 속성 경우는 ShowFooter 속성 true
. 마찬가지로, 데이터 컨트롤 필드 속성에는 어떤 요소 인지에 따라 UI 요소의 프레젠테이션을 영향을 줍니다. ItemStyle 속성 필드에 항상 적용 됩니다. 형식에서 파생 하는 경우 DataControlField 컨트롤을 포함 합니다 ButtonField 또는 CheckBoxField 클래스는 ControlStyle 속성 필드에 적용 됩니다.
생성자
DataControlField() |
DataControlField 클래스의 새 인스턴스를 초기화합니다. |
속성
AccessibleHeaderText |
일부 컨트롤에서 |
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() |
|
SaveViewState() |
페이지가 서버에 포스트백된 이후의 DataControlField 뷰 상태 변경 내용을 저장합니다. |
ToString() |
이 DataControlField 개체를 나타내는 문자열을 반환합니다. |
TrackViewState() |
DataControlField 개체가 뷰 상태의 변경 내용을 추적하도록 합니다. 이렇게 하면 해당 뷰 상태의 변경 내용을 컨트롤의 ViewState 속성에 저장하여 같은 페이지에 대한 여러 요청에서 일관되게 유지할 수 있습니다. |
ValidateSupportsCallback() |
파생 클래스에서 재정의될 때 필드에 포함된 컨트롤에서 콜백이 지원되는지를 알립니다. |
명시적 인터페이스 구현
IDataSourceViewSchemaAccessor.DataSourceViewSchema |
이 DataControlField 개체에 연결된 스키마를 가져오거나 설정합니다. |
IStateManager.IsTrackingViewState |
DataControlField 개체가 해당 뷰 상태의 변경 내용을 저장하는지 여부를 나타내는 값을 가져옵니다. |
IStateManager.LoadViewState(Object) |
데이터 컨트롤 필드를 이전에 저장된 뷰 상태로 복원합니다. |
IStateManager.SaveViewState() |
페이지가 서버에 포스트백된 이후의 DataControlField 뷰 상태 변경 내용을 저장합니다. |
IStateManager.TrackViewState() |
DataControlField 개체가 뷰 상태의 변경 내용을 추적하도록 합니다. 이렇게 하면 해당 뷰 상태의 변경 내용을 컨트롤의 ViewState 속성에 저장하여 같은 페이지에 대한 여러 요청에서 일관되게 유지할 수 있습니다. |