Bagikan melalui


DataControlField Kelas

Definisi

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 AbbreviatedText nilai properti dalam beberapa kontrol.

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 FieldChanged acara.

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.

Berlaku untuk

Lihat juga