Freigeben über


DataControlField Klasse

Definition

Dient als Basisklasse für alle Feldtypen von Datensteuerelementen, die eine Datenspalte in tabellarischen datengebundenen Steuerelementen darstellen, z. B. DetailsView und 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
Vererbung
DataControlField
Abgeleitet
Attribute
Implementiert

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Sie Zeilen in einem DetailsView Steuerelement verwenden BoundField und ButtonField Objekte anzeigen, von denen sie abgeleitet DataControlFieldwerden. Das DetailsView Steuerelement hat den AutoGenerateRows Eigenschaftssatz festgelegt false, der es ermöglicht, eine Teilmenge der von der SelectCommand Eigenschaft zurückgegebenen Daten anzuzeigen.

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

Im folgenden Codebeispiel wird veranschaulicht, wie Sie die BoundField Klasse erweitern, um ein benutzerdefiniertes gebundenes Feld zu erstellen, das in einem GridView Steuerelement verwendet werden kann. Ähnlich wie bei der CheckBoxField Klasse stellt die RadioButtonField Klasse eine Spalte von true oder false Daten dar. Obwohl die Daten, an die die CheckBoxField Klasse gebunden ist, eine beliebige Gruppe oder true false Werte sein können, kann die Datenmenge, an die die RadioButtonField Klasse gebunden ist, jeweils nur einen true Wert aufweisen. In diesem Beispiel wird veranschaulicht, wie sie die und die ExtractValuesFromCell InitializeCell Methoden implementieren, zwei wichtige Methoden aller Klassen, die von 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

Im folgenden Codebeispiel wird veranschaulicht, wie Sie die Klasse verwenden, die RadioButtonField im vorherigen Beispiel in einem GridView Steuerelement bereitgestellt wird. In diesem Beispiel zeigt das GridView Steuerelement Daten für ein Sportteam an. Die Spielerdaten werden in einer Datentabelle verwaltet, die eine ID-Spalte, Spalten für die Spielernamen und eine wahre oder falsche Spalte enthält, die den Kapitän des Teams identifiziert. Die RadioButtonField Klasse wird verwendet, um anzuzeigen, welche Teammitglieder der aktuelle Teamkapitän ist. Das GridView Steuerelement kann bearbeitet werden, um einen neuen Teamkapitän auszuwählen oder andere Spielerinformationen zu ändern.

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

Hinweise

Die DataControlField Klasse dient als Basisklasse für alle Datensteuerelementfeldtypen. Datensteuerelementfelder werden von datengebundenen Steuerelementen verwendet, um ein Datenfeld darzustellen, ähnlich wie ein DataGridColumn Objekt einen Spaltentyp im DataGrid Steuerelement darstellt.

Verwenden Sie die Klassen, die abgeleitet DataControlField werden, um zu steuern, wie ein Datenfeld in einem datengebundenen Steuerelement wie DetailsView z. B. oder GridView. In der folgenden Tabelle sind die verschiedenen Datensteuerelementfeldtypen aufgeführt, die von ASP.NET bereitgestellt werden.

Spaltenfeldtyp BESCHREIBUNG
BoundField Zeigt den Wert eines Felds in einer Datenquelle als Text an.
ButtonField Zeigt eine Befehlsschaltfläche in einem datengebundenen Steuerelement an. Je nach Steuerelement können Sie entweder eine Zeile oder eine Spalte mit einem benutzerdefinierten Schaltflächensteuerelement anzeigen, z. B. eine Schaltfläche "Hinzufügen" oder eine Schaltfläche "Entfernen".
CheckBoxField Zeigt ein Kontrollkästchen in einem datengebundenen Steuerelement an. Dieser Datentyp des Datensteuerelementfelds wird häufig verwendet, um Felder mit einem booleschen Wert anzuzeigen.
CommandField Zeigt integrierte Befehlsschaltflächen an, um Bearbeitungs-, Einfüge- oder Löschvorgänge in einem datengebundenen Steuerelement auszuführen.
HyperLinkField Zeigt den Wert eines Felds in einer Datenquelle als Hyperlink an. Mit diesem Feldtyp des Datensteuerelements können Sie ein zweites Feld an die URL des Links binden.
ImageField Zeigt ein Bild in einem datengebundenen Steuerelement an.
TemplateField Zeigt benutzerdefinierte Inhalte in einem datengebundenen Steuerelement entsprechend einer angegebenen Vorlage an.

Sie können auch die DataControlField Klassen BoundField erweitern, um eigene Datentypen für Das Datensteuerelement zu erstellen.

Die DataControlField Klasse stellt viele Eigenschaften bereit, die bestimmen, wie Benutzeroberflächenelemente im datengebundenen Steuerelement dargestellt werden. Nicht jedes Steuerelement verwendet beim Rendern einer Benutzeroberfläche jede verfügbare Datensteuerelementfeldeigenschaft. Beispielsweise enthält das DetailsView Steuerelement, das die Datensteuerelementfelder als Zeilen anzeigt, ein Kopfzeilenelement für jedes Datensteuerelementfeld, aber kein Fußzeilenelement. Daher werden die eigenschaften und FooterStyle die FooterText Eigenschaften vom DetailsView Steuerelement ignoriert. Das GridView Steuerelement verwendet jedoch die FooterText und FooterStyle die Eigenschaften, wenn die ShowFooter Eigenschaft auf truefestgelegt ist. Ebenso wirken sich die Eigenschaften des Datensteuerelementfelds auf die Darstellung von UI-Elementen aus, je nachdem, was das Element ist. Die ItemStyle Eigenschaft wird immer auf das Feld angewendet. Wenn der von DataControlField einem Steuerelement abgeleitete Typ wie in den ButtonField CheckBoxField Klassen ein Steuerelement enthält, wird die ControlStyle Eigenschaft auf das Feld angewendet.

Konstruktoren

DataControlField()

Initialisiert eine neue Instanz der DataControlField-Klasse.

Eigenschaften

AccessibleHeaderText

Ruft Text ab, der in einigen Steuerelementen als AbbreviatedText-Eigenschaftswert gerendert wird, oder legt diesen fest.

Control

Ruft einen Verweis auf das Datensteuerelement ab, dem das DataControlField-Objekt zugeordnet ist.

ControlStyle

Ruft den Stil aller im DataControlField-Objekt enthaltenen Webserver-Steuerelemente ab.

DesignMode

Ruft einen Wert ab, der angibt, ob ein Datensteuerelement-Feld derzeit in einer Entwurfszeitumgebung angezeigt wird.

FooterStyle

Ruft den Stil der Fußzeile des Datensteuerelement-Felds ab oder legt diesen fest.

FooterText

Ruft den Text ab, der im Fußzeilenelement eines Datensteuerelement-Felds angezeigt werden soll, oder legt diesen fest.

HeaderImageUrl

Ruft die URL zu einem Bild ab, das im Headerelement eines Datensteuerelement-Felds angezeigt werden soll, oder legt diese fest.

HeaderStyle

Ruft den Stil des Headers des Datensteuerelement-Felds ab oder legt diesen fest.

HeaderText

Ruft den Text ab, der im Headerelement eines Datensteuerelement-Felds angezeigt werden soll, oder legt diesen fest.

InsertVisible

Ruft einen Wert ab, der angibt, ob das DataControlField-Objekt angezeigt wird, wenn sich sein übergeordnetes datengebundenes Steuerelement im Einfügemodus befindet.

IsTrackingViewState

Ruft einen Wert ab, der angibt, ob das DataControlField-Objekt Änderungen des Ansichtszustands speichert.

ItemStyle

Ruft das Format von allen textbasierten Inhalten ab, die von einem Datensteuerelement-Feld angezeigt werden.

ShowHeader

Ruft einen Wert ab, der angibt, ob das Headerelement eines Datensteuerelementfelds gerendert wird, oder legt diesen fest.

SortExpression

Ruft einen Sortierausdruck ab, mit dem ein Datenquellen-Steuerelement Daten sortiert, oder legt diesen fest.

ValidateRequestMode

Ruft einen Wert ab oder legt einen Wert fest, der angibt, ob das Steuerelement Clienteingaben überprüft.

ViewState

Ruft ein Wörterbuch mit Zustandsinformationen ab, mit dem Sie den Ansichtszustand eines DataControlField-Objekts über mehrere Anforderungen für dieselbe Seite hinweg speichern und wiederherstellen können.

Visible

Ruft einen Wert ab, der angibt, ob ein Datensteuerelement-Feld dargestellt werden soll, oder legt diesen fest.

Methoden

CloneField()

Erstellt eine doppelte Kopie des aktuellen, von DataControlField abgeleiteten Objekts.

CopyProperties(DataControlField)

Kopiert die Eigenschaften des aktuellen, aus DataControlField abgeleiteten Objekts in das angegebene DataControlField-Objekt.

CreateField()

Beim Überschreiben in einer abgeleiteten Klasse wird ein leeres, von DataControlField abgeleitetes Objekt erstellt.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
ExtractValuesFromCell(IOrderedDictionary, DataControlFieldCell, DataControlRowState, Boolean)

Extrahiert den Wert des Datensteuerelement-Felds aus der aktuellen Tabellenzelle und fügt den Wert der angegebenen IDictionary-Auflistung hinzu.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
Initialize(Boolean, Control)

Führt eine grundlegende Instanzinitialisierung für ein Datensteuerelement-Feld aus.

InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32)

Fügt der Steuerelementauflistung einer Zelle Text oder Steuerelemente hinzu.

LoadViewState(Object)

Stellt den früher gespeicherten Ansichtszustand der Datenquellenansicht wieder her.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
OnFieldChanged()

Löst das FieldChanged-Ereignis aus.

SaveViewState()

Speichert die Änderungen am DataControlField-Ansichtszustand ab dem Zeitpunkt, an dem die Seite an den Server zurückgesendet wurde.

ToString()

Gibt eine Zeichenfolge zurück, die dieses DataControlField-Objekt darstellt.

TrackViewState()

Bewirkt, dass das DataControlField-Objekt Änderungen an seinem Ansichtszustand nachverfolgt, damit diese in der ViewState-Eigenschaft des Steuerelements gespeichert und über mehrere Anforderungen für dieselbe Seite hinweg beibehalten werden.

ValidateSupportsCallback()

Signalisiert beim Überschreiben in einer abgeleiteten Klasse, dass die in einem Feld enthaltenen Steuerelemente Rückrufe unterstützen.

Explizite Schnittstellenimplementierungen

IDataSourceViewSchemaAccessor.DataSourceViewSchema

Ruft das Schema ab, das diesem DataControlField-Objekt zugeordnet ist, oder legt es fest.

IStateManager.IsTrackingViewState

Ruft einen Wert ab, der angibt, ob das DataControlField-Objekt Änderungen des Ansichtszustands speichert.

IStateManager.LoadViewState(Object)

Stellt den zuvor gespeicherten Ansichtszustand des Datensteuerelement-Felds wieder her.

IStateManager.SaveViewState()

Speichert die Änderungen am DataControlField-Ansichtszustand ab dem Zeitpunkt, an dem die Seite an den Server zurückgesendet wurde.

IStateManager.TrackViewState()

Bewirkt, dass das DataControlField-Objekt Änderungen an seinem Ansichtszustand nachverfolgt, damit diese in der ViewState-Eigenschaft des Steuerelements gespeichert und über mehrere Anforderungen für dieselbe Seite hinweg beibehalten werden.

Gilt für

Siehe auch