DataControlField Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 |
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() |
|
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. |