DataControlField Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Berfungsi sebagai kelas dasar untuk semua jenis bidang kontrol data, yang mewakili kolom data dalam kontrol terikat data tabular seperti DetailsView dan 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
- Warisan
-
DataControlField
- Turunan
- Atribut
- Penerapan
Contoh
Contoh kode berikut menunjukkan cara menggunakan BoundField dan ButtonField objek, yang berasal dari DataControlField, untuk menampilkan baris dalam DetailsView kontrol. Kontrol DetailsView memiliki properti yang AutoGenerateRows diatur ke false, yang memungkinkannya menampilkan subset data yang dikembalikan oleh SelectCommand properti .
<%@ 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>
Contoh kode berikut menunjukkan cara memperluas BoundField kelas untuk membuat bidang terikat kustom yang dapat digunakan dalam GridView kontrol. Mirip CheckBoxField dengan kelas , RadioButtonField kelas mewakili kolom true atau false data. Namun, meskipun data yang CheckBoxField terikat kelas dapat berupa sekumpulan true nilai atau false apa pun, kumpulan data yang RadioButtonField terikat kelas hanya dapat memiliki satu true nilai pada waktu tertentu. Contoh ini menunjukkan cara menerapkan ExtractValuesFromCell metode dan InitializeCell , dua metode penting dari semua kelas yang berasal dari 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
Contoh kode berikut menunjukkan cara menggunakan RadioButtonField kelas , yang disediakan dalam contoh sebelumnya, dalam GridView kontrol. Dalam contoh ini, GridView kontrol menampilkan data untuk tim olahraga. Data pemutar dipertahankan dalam tabel data yang menyertakan kolom ID, kolom untuk nama pemutar, dan kolom benar atau salah yang mengidentifikasi kapten tim. Kelas RadioButtonField ini digunakan untuk menampilkan anggota tim mana yang merupakan kapten tim saat ini. Kontrol GridView dapat diedit untuk memilih kapten tim baru atau mengubah informasi pemain lain.
<%@ 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>
Keterangan
Kelas berfungsi DataControlField sebagai kelas dasar untuk semua jenis bidang kontrol data. Bidang kontrol data digunakan oleh kontrol terikat data untuk mewakili bidang data, mirip dengan bagaimana DataGridColumn objek mewakili jenis kolom dalam DataGrid kontrol.
Gunakan kelas yang berasal dari DataControlField untuk mengontrol bagaimana bidang data ditampilkan dalam kontrol terikat data seperti DetailsView atau GridView. Tabel berikut ini mencantumkan berbagai tipe bidang kontrol data yang disediakan oleh ASP.NET.
| Tipe bidang kolom | Deskripsi |
|---|---|
| BoundField | Menampilkan nilai bidang dalam sumber data sebagai teks. |
| ButtonField | Menampilkan tombol perintah dalam kontrol terikat data. Bergantung pada kontrol, ini memungkinkan Anda menampilkan baris atau kolom dengan kontrol tombol kustom, seperti tombol Tambahkan atau Hapus. |
| CheckBoxField | Menampilkan kotak centang dalam kontrol terikat data. Tipe bidang kontrol data ini umumnya digunakan untuk menampilkan bidang dengan nilai Boolean. |
| CommandField | Menampilkan tombol perintah bawaan untuk melakukan operasi edit, sisipkan, atau hapus dalam kontrol terikat data. |
| HyperLinkField | Menampilkan nilai bidang dalam sumber data sebagai hyperlink. Tipe bidang kontrol data ini memungkinkan Anda mengikat bidang kedua ke URL hyperlink. |
| ImageField | Menampilkan gambar dalam kontrol terikat data. |
| TemplateField | Menampilkan konten yang ditentukan pengguna dalam kontrol terikat data sesuai dengan templat tertentu. |
Anda juga dapat memperluas DataControlField kelas dan BoundField untuk membuat jenis bidang kontrol data Anda sendiri.
Kelas ini DataControlField menyediakan banyak properti yang menentukan bagaimana elemen antarmuka pengguna (UI) disajikan dalam kontrol terikat data. Tidak setiap kontrol menggunakan setiap properti bidang kontrol data yang tersedia saat merender UI. Misalnya, DetailsView kontrol, yang menampilkan bidang kontrol data sebagai baris, menyertakan item header untuk setiap bidang kontrol data, tetapi tidak ada item footer. Oleh karena itu, FooterText properti dan FooterStyle diabaikan oleh DetailsView kontrol. Namun GridView , kontrol menggunakan FooterText properti dan FooterStyle jika ShowFooter properti diatur ke true. Demikian pula, properti bidang kontrol data memengaruhi presentasi elemen UI tergantung pada apa elemennya. Properti ItemStyle selalu diterapkan ke bidang . Jika jenis yang berasal dari DataControlField berisi kontrol, seperti di ButtonField kelas atau CheckBoxField , ControlStyle properti diterapkan ke bidang .
Konstruktor
| Nama | Deskripsi |
|---|---|
| DataControlField() |
Menginisialisasi instans baru dari kelas DataControlField. |
Properti
| Nama | Deskripsi |
|---|---|
| AccessibleHeaderText |
Mendapatkan atau mengatur teks yang dirender sebagai |
| Control |
Mendapatkan referensi ke kontrol data yang DataControlField terkait dengan objek. |
| ControlStyle |
Mendapatkan gaya kontrol server Web apa pun yang terkandung oleh DataControlField objek. |
| DesignMode |
Mendapatkan nilai yang menunjukkan apakah bidang kontrol data saat ini dilihat di lingkungan waktu desain. |
| FooterStyle |
Mendapatkan atau mengatur gaya footer bidang kontrol data. |
| FooterText |
Mendapatkan atau mengatur teks yang ditampilkan dalam item footer bidang kontrol data. |
| HeaderImageUrl |
Mendapatkan atau mengatur URL gambar yang ditampilkan di item header bidang kontrol data. |
| HeaderStyle |
Mendapatkan atau mengatur gaya header bidang kontrol data. |
| HeaderText |
Mendapatkan atau mengatur teks yang ditampilkan di item header bidang kontrol data. |
| InsertVisible |
Mendapatkan nilai yang menunjukkan apakah DataControlField objek terlihat ketika kontrol terikat data induknya berada dalam mode sisipkan. |
| IsTrackingViewState |
Mendapatkan nilai yang menunjukkan apakah DataControlField objek menyimpan perubahan pada status tampilannya. |
| ItemStyle |
Mendapatkan gaya konten berbasis teks apa pun yang ditampilkan oleh bidang kontrol data. |
| ShowHeader |
Mendapatkan atau mengatur nilai yang menunjukkan apakah item header bidang kontrol data dirender. |
| SortExpression |
Mendapatkan atau mengatur ekspresi pengurutan yang digunakan oleh kontrol sumber data untuk mengurutkan data. |
| ValidateRequestMode |
Mendapatkan atau menetapkan nilai yang menentukan apakah kontrol memvalidasi input klien. |
| ViewState |
Mendapatkan kamus informasi status yang memungkinkan Anda menyimpan dan memulihkan status DataControlField tampilan objek di beberapa permintaan untuk halaman yang sama. |
| Visible |
Mendapatkan atau menetapkan nilai yang menunjukkan apakah bidang kontrol data dirender. |
Metode
| Nama | Deskripsi |
|---|---|
| CloneField() |
Membuat salinan duplikat dari objek -turunan saat ini DataControlField. |
| CopyProperties(DataControlField) |
Menyalin properti objek -turunan saat ini DataControlFieldke objek yang ditentukan DataControlField . |
| CreateField() |
Saat ditimpa di kelas turunan, membuat DataControlFieldobjek kosong -turunan. |
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| ExtractValuesFromCell(IOrderedDictionary, DataControlFieldCell, DataControlRowState, Boolean) |
Mengekstrak nilai bidang kontrol data dari sel tabel saat ini dan menambahkan nilai ke koleksi yang ditentukan IDictionary . |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| Initialize(Boolean, Control) |
Melakukan inisialisasi instans dasar untuk bidang kontrol data. |
| InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32) |
Menambahkan teks atau kontrol ke koleksi kontrol sel. |
| LoadViewState(Object) |
Memulihkan status tampilan sumber data yang sebelumnya disimpan. |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| OnFieldChanged() |
Menaikkan |
| SaveViewState() |
Menyimpan perubahan yang dibuat pada DataControlField status tampilan sejak halaman diposting kembali ke server. |
| ToString() |
Mengembalikan string yang mewakili objek ini DataControlField . |
| TrackViewState() |
DataControlField Menyebabkan objek melacak perubahan pada status tampilannya sehingga dapat disimpan di properti kontrol ViewState dan disimpan di seluruh permintaan untuk halaman yang sama. |
| ValidateSupportsCallback() |
Saat ditimpa di kelas turunan, menandakan bahwa kontrol yang dimuat oleh bidang mendukung panggilan balik. |
Implementasi Antarmuka Eksplisit
| Nama | Deskripsi |
|---|---|
| IDataSourceViewSchemaAccessor.DataSourceViewSchema |
Mendapatkan atau mengatur skema yang terkait dengan objek ini DataControlField . |
| IStateManager.IsTrackingViewState |
Mendapatkan nilai yang menunjukkan apakah DataControlField objek menyimpan perubahan pada status tampilannya. |
| IStateManager.LoadViewState(Object) |
Memulihkan status tampilan yang disimpan sebelumnya di bidang kontrol data. |
| IStateManager.SaveViewState() |
Menyimpan perubahan yang dibuat pada DataControlField status tampilan sejak halaman diposting kembali ke server. |
| IStateManager.TrackViewState() |
DataControlField Menyebabkan objek melacak perubahan pada status tampilannya sehingga dapat disimpan di properti kontrol ViewState dan disimpan di seluruh permintaan untuk halaman yang sama. |