DataControlField Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 true
festgelegt 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 |
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 |
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. |