DataControlField Klasa

Definicja

Służy jako klasa bazowa dla wszystkich typów pól kontroli danych, które reprezentują kolumnę danych w tabelarycznych kontrolkach powiązanych z danymi, takich jak DetailsView i 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
Dziedziczenie
DataControlField
Pochodne
Atrybuty
Implementuje

Przykłady

W poniższym przykładzie kodu pokazano, jak używać BoundField obiektów i ButtonField , które pochodzą z DataControlFieldklasy , do wyświetlania wierszy w kontrolce DetailsView . Kontrolka DetailsView ma właściwość ustawioną AutoGenerateRows na false, która umożliwia wyświetlanie podzestawu SelectCommand danych zwróconych przez właściwość.

<%@ 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>

W poniższym przykładzie kodu pokazano, jak rozszerzyć klasę BoundField w celu utworzenia niestandardowego pola powiązanego, którego można użyć w kontrolce GridView . Podobnie jak w RadioButtonField przypadku CheckBoxField klasy, klasa reprezentuje kolumnę true lub false dane. Jednak chociaż dane, które CheckBoxField klasa jest powiązana, mogą być dowolnym zestawem true lub false wartościami, zestaw danych powiązanych RadioButtonField z klasą może mieć tylko jedną true wartość w danym momencie. W tym przykładzie pokazano, jak zaimplementować ExtractValuesFromCell metody i InitializeCell , dwie ważne metody wszystkich klas pochodnych z DataControlFieldklasy .

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

W poniższym przykładzie kodu pokazano, jak używać RadioButtonField klasy podanej w poprzednim przykładzie w kontrolce GridView . W tym przykładzie kontrolka GridView wyświetla dane dla zespołu sportowego. Dane gracza są przechowywane w tabeli danych zawierającej kolumnę IDENTYFIKATORa, kolumny dla nazw graczy oraz prawdziwą lub fałszywą kolumnę identyfikującą kapitana zespołu. Klasa RadioButtonField służy do wyświetlania, który członek zespołu jest obecnym kapitanem zespołu. Kontrolkę GridView można edytować, aby wybrać nowego kapitana zespołu lub zmienić inne informacje o zawodnikach.

<%@ 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>

Uwagi

Klasa DataControlField służy jako klasa bazowa dla wszystkich typów pól kontroli danych. Pola kontrolki danych są używane przez kontrolki powiązane z danymi do reprezentowania pola danych, podobnie jak w jaki sposób DataGridColumn obiekt reprezentuje typ kolumny w kontrolce DataGrid .

Użyj klas pochodnych, DataControlField aby kontrolować sposób wyświetlania pola danych w kontrolce powiązanej z danymi, takiej jak DetailsView lub GridView. W poniższej tabeli wymieniono różne typy pól kontroli danych udostępniane przez ASP.NET.

Typ pola kolumny Opis
BoundField Wyświetla wartość pola w źródle danych jako tekst.
ButtonField Wyświetla przycisk polecenia w kontrolce powiązanej z danymi. W zależności od kontrolki pozwala to wyświetlać wiersz lub kolumnę z kontrolką przycisku niestandardowego, taką jak Przycisk Dodaj lub Usuń.
CheckBoxField Wyświetla pole wyboru w kontrolce powiązanej z danymi. Ten typ pola kontrolki danych jest często używany do wyświetlania pól z wartością logiczną.
CommandField Wyświetla wbudowane przyciski poleceń do wykonywania operacji edytowania, wstawiania lub usuwania w kontrolce powiązanej z danymi.
HyperLinkField Wyświetla wartość pola w źródle danych jako hiperłącze. Ten typ pola kontrolki danych umożliwia powiązanie drugiego pola z adresem URL hiperłącza.
ImageField Wyświetla obraz w kontrolce powiązanej z danymi.
TemplateField Wyświetla zawartość zdefiniowaną przez użytkownika w kontrolce powiązanej z danymi zgodnie z określonym szablonem.

Możesz również rozszerzyć DataControlField klasy i BoundField , aby utworzyć własne typy pól kontroli danych.

Klasa DataControlField udostępnia wiele właściwości, które określają sposób prezentowania elementów interfejsu użytkownika w kontrolce powiązanej z danymi. Nie każda kontrolka używa każdej dostępnej właściwości pola kontrolki danych podczas renderowania interfejsu użytkownika. Na przykład kontrolka DetailsView , która wyświetla pola kontrolki danych jako wiersze, zawiera element nagłówka dla każdego pola kontrolki danych, ale bez elementu stopki. FooterText W związku z tym właściwości i FooterStyle są ignorowane przez kontrolkę DetailsView . Kontrolka GridView używa FooterText jednak właściwości i FooterStyle , jeśli właściwość jest ustawiona ShowFooter na true. Podobnie właściwości pola kontrolki danych wpływają na prezentację elementów interfejsu użytkownika w zależności od tego, jaki element jest. Właściwość ItemStyle jest zawsze stosowana do pola. Jeśli typ pochodzący z DataControlField zawiera kontrolkę, tak jak w ButtonField klasach lub CheckBoxField , ControlStyle właściwość jest stosowana do pola.

Konstruktory

DataControlField()

Inicjuje nowe wystąpienie klasy DataControlField.

Właściwości

AccessibleHeaderText

Pobiera lub ustawia tekst renderowany jako AbbreviatedText wartość właściwości w niektórych kontrolkach.

Control

Pobiera odwołanie do kontrolki danych skojarzonej DataControlField z obiektem.

ControlStyle

Pobiera styl wszystkich kontrolek serwera sieci Web zawartych w DataControlField obiekcie.

DesignMode

Pobiera wartość wskazującą, czy pole kontrolki danych jest obecnie wyświetlane w środowisku czasu projektowania.

FooterStyle

Pobiera lub ustawia styl stopki pola kontrolki danych.

FooterText

Pobiera lub ustawia tekst wyświetlany w elemencie stopki pola kontrolki danych.

HeaderImageUrl

Pobiera lub ustawia adres URL obrazu wyświetlanego w elemencie nagłówka pola kontrolki danych.

HeaderStyle

Pobiera lub ustawia styl nagłówka pola kontrolki danych.

HeaderText

Pobiera lub ustawia tekst wyświetlany w elemencie nagłówka pola kontrolki danych.

InsertVisible

Pobiera wartość wskazującą, czy DataControlField obiekt jest widoczny, gdy jego nadrzędna kontrolka związana z danymi jest w trybie wstawiania.

IsTrackingViewState

Pobiera wartość wskazującą, czy DataControlField obiekt zapisuje zmiany w stanie widoku.

ItemStyle

Pobiera styl dowolnej zawartości tekstowej wyświetlanej przez pole kontrolki danych.

ShowHeader

Pobiera lub ustawia wartość wskazującą, czy element nagłówka pola kontrolki danych jest renderowany.

SortExpression

Pobiera lub ustawia wyrażenie sortowania używane przez kontrolkę źródła danych do sortowania danych.

ValidateRequestMode

Pobiera lub ustawia wartość określającą, czy kontrolka weryfikuje dane wejściowe klienta.

ViewState

Pobiera słownik informacji o stanie, który umożliwia zapisanie i przywrócenie stanu DataControlField widoku obiektu na wielu żądaniach dla tej samej strony.

Visible

Pobiera lub ustawia wartość wskazującą, czy pole kontrolki danych jest renderowane.

Metody

CloneField()

Tworzy zduplikowaną kopię bieżącego DataControlFieldobiektu pochodnego.

CopyProperties(DataControlField)

Kopiuje właściwości bieżącego DataControlFieldobiektu pochodnego do określonego DataControlField obiektu.

CreateField()

Po przesłonięciu w klasie pochodnej tworzy pusty DataControlFieldobiekt pochodny.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
ExtractValuesFromCell(IOrderedDictionary, DataControlFieldCell, DataControlRowState, Boolean)

Wyodrębnia wartość pola kontrolki danych z bieżącej komórki tabeli i dodaje wartość do określonej IDictionary kolekcji.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
Initialize(Boolean, Control)

Wykonuje inicjowanie podstawowego wystąpienia dla pola kontrolki danych.

InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32)

Dodaje tekst lub kontrolki do kolekcji kontrolek komórki.

LoadViewState(Object)

Przywraca wcześniej zapisany stan widoku źródła danych.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
OnFieldChanged()

FieldChanged Zgłasza zdarzenie.

SaveViewState()

Zapisuje zmiany wprowadzone w DataControlField stanie widoku od czasu opublikowania strony z powrotem na serwerze.

ToString()

Zwraca ciąg reprezentujący ten DataControlField obiekt.

TrackViewState()

DataControlField Powoduje, że obiekt będzie śledzić zmiany w stanie widoku, dzięki czemu można je przechowywać we właściwości kontrolki ViewState i utrwalać w żądaniach dla tej samej strony.

ValidateSupportsCallback()

Po zastąpieniu w klasie pochodnej sygnały, że kontrolki zawarte przez wywołania zwrotne obsługi pól.

Jawne implementacje interfejsu

IDataSourceViewSchemaAccessor.DataSourceViewSchema

Pobiera lub ustawia schemat skojarzony z tym DataControlField obiektem.

IStateManager.IsTrackingViewState

Pobiera wartość wskazującą, czy DataControlField obiekt zapisuje zmiany w stanie widoku.

IStateManager.LoadViewState(Object)

Przywraca wcześniej zapisany stan widoku pola kontroli danych.

IStateManager.SaveViewState()

Zapisuje zmiany wprowadzone w DataControlField stanie widoku od czasu opublikowania strony z powrotem na serwerze.

IStateManager.TrackViewState()

DataControlField Powoduje, że obiekt będzie śledzić zmiany w stanie widoku, dzięki czemu można je przechowywać we właściwości kontrolki ViewState i utrwalać w żądaniach dla tej samej strony.

Dotyczy

Zobacz też