Condividi tramite


DataControlField Classe

Definizione

Funge da classe base per tutti i tipi di campo di controllo dati, che rappresentano una colonna di dati in controlli con associazione a dati tabulari, DetailsView ad esempio e 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
Ereditarietà
DataControlField
Derivato
Attributi
Implementazioni

Esempio

Nell'esempio di codice seguente viene illustrato come usare BoundField gli oggetti e ButtonField derivati da DataControlFieldper visualizzare righe in un DetailsView controllo . Il DetailsView controllo ha la AutoGenerateRows proprietà impostata su false, che consente di visualizzare un subset dei dati restituiti dalla SelectCommand proprietà .

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

Nell'esempio di codice seguente viene illustrato come estendere la BoundField classe per creare un campo associato personalizzato che può essere usato in un GridView controllo . Analogamente alla CheckBoxField classe , la RadioButtonField classe rappresenta una colonna di true dati o false . Tuttavia, anche se i dati a cui è associata la CheckBoxField classe possono essere qualsiasi set di true valori o false , il set di dati a cui è associata la RadioButtonField classe può avere un true solo valore in qualsiasi momento. In questo esempio viene illustrato come implementare i ExtractValuesFromCell metodi e InitializeCell , due metodi importanti di tutte le classi derivate da 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

Nell'esempio di codice seguente viene illustrato come usare la RadioButtonField classe , fornita nell'esempio precedente, in un GridView controllo . In questo esempio, il GridView controllo visualizza i dati per una squadra sportiva. I dati del giocatore vengono mantenuti in una tabella dati che include una colonna ID, colonne per i nomi dei giocatori e una colonna true o false che identifica il capitano della squadra. La RadioButtonField classe viene usata per visualizzare quale membro del team è il capitano della squadra corrente. Il GridView controllo può essere modificato per scegliere un nuovo capitano della squadra o per modificare altre informazioni sul giocatore.

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

Commenti

La DataControlField classe funge da classe base per tutti i tipi di campo di controllo dati. I campi di controllo dati vengono utilizzati dai controlli associati a dati per rappresentare un campo di dati, in modo analogo al modo in cui un DataGridColumn oggetto rappresenta un tipo di colonna nel DataGrid controllo .

Usare le classi derivate da DataControlField per controllare la modalità di visualizzazione di un campo di dati in un controllo associato a dati, DetailsView ad esempio o GridView. Nella tabella seguente sono elencati i diversi tipi di campo di controllo dati forniti da ASP.NET.

Tipo di campo colonna Descrizione
BoundField Visualizza il valore di un campo in un'origine dati come testo.
ButtonField Visualizza un pulsante di comando in un controllo associato a dati. A seconda del controllo, ciò consente di visualizzare una riga o una colonna con un controllo pulsante personalizzato, ad esempio un pulsante Aggiungi o Rimuovi.
CheckBoxField Visualizza una casella di controllo in un controllo associato a dati. Questo tipo di campo di controllo dati viene comunemente usato per visualizzare i campi con un valore booleano.
CommandField Visualizza i pulsanti di comando predefiniti per eseguire operazioni di modifica, inserimento o eliminazione in un controllo associato a dati.
HyperLinkField Visualizza il valore di un campo in un'origine dati come collegamento ipertestuale. Questo tipo di campo del controllo dati consente di associare un secondo campo all'URL del collegamento ipertestuale.
ImageField Visualizza un'immagine in un controllo associato a dati.
TemplateField Visualizza il contenuto definito dall'utente in un controllo associato a dati in base a un modello specificato.

È anche possibile estendere le DataControlField classi e BoundField per creare tipi di campo di controllo dati personalizzati.

La DataControlField classe fornisce molte proprietà che determinano la modalità di presentazione degli elementi dell'interfaccia utente nel controllo associato a dati. Non tutti i controlli usano ogni proprietà del campo di controllo dati disponibile durante il rendering di un'interfaccia utente. Ad esempio, il DetailsView controllo , che visualizza i campi del controllo dati come righe, include un elemento di intestazione per ogni campo del controllo dati, ma nessun elemento piè di pagina. Pertanto, le FooterText proprietà e FooterStyle vengono ignorate dal DetailsView controllo . Il GridView controllo usa tuttavia le FooterText proprietà e FooterStyle se la ShowFooter proprietà è impostata su true. Analogamente, le proprietà del campo del controllo dati influiscono sulla presentazione degli elementi dell'interfaccia utente a seconda dell'elemento. La ItemStyle proprietà viene sempre applicata al campo. Se il tipo derivato da DataControlField contiene un controllo , come nelle ButtonField classi o CheckBoxField , la ControlStyle proprietà viene applicata al campo .

Costruttori

Nome Descrizione
DataControlField()

Inizializza una nuova istanza della classe DataControlField.

Proprietà

Nome Descrizione
AccessibleHeaderText

Ottiene o imposta il testo di cui viene eseguito il rendering come valore della AbbreviatedText proprietà in alcuni controlli.

Control

Ottiene un riferimento al controllo dati a cui è associato l'oggetto DataControlField .

ControlStyle

Ottiene lo stile di tutti i controlli server Web contenuti nell'oggetto DataControlField .

DesignMode

Ottiene un valore che indica se un campo di controllo dati è attualmente visualizzato in un ambiente in fase di progettazione.

FooterStyle

Ottiene o imposta lo stile del piè di pagina del campo del controllo dati.

FooterText

Ottiene o imposta il testo visualizzato nell'elemento piè di pagina di un campo del controllo dati.

HeaderImageUrl

Ottiene o imposta l'URL di un'immagine visualizzata nell'elemento di intestazione di un campo di controllo dati.

HeaderStyle

Ottiene o imposta lo stile dell'intestazione del campo del controllo dati.

HeaderText

Ottiene o imposta il testo visualizzato nell'elemento di intestazione di un campo del controllo dati.

InsertVisible

Ottiene un valore che indica se l'oggetto è visibile quando il DataControlField controllo associato a dati padre è in modalità di inserimento.

IsTrackingViewState

Ottiene un valore che indica se l'oggetto DataControlField sta salvando le modifiche apportate allo stato di visualizzazione.

ItemStyle

Ottiene lo stile di qualsiasi contenuto basato su testo visualizzato da un campo di controllo dati.

ShowHeader

Ottiene o imposta un valore che indica se viene eseguito il rendering dell'elemento di intestazione di un campo del controllo dati.

SortExpression

Ottiene o imposta un'espressione di ordinamento utilizzata da un controllo origine dati per ordinare i dati.

ValidateRequestMode

Ottiene o imposta un valore che specifica se il controllo convalida l'input client.

ViewState

Ottiene un dizionario di informazioni sullo stato che consente di salvare e ripristinare lo stato di visualizzazione di un DataControlField oggetto in più richieste per la stessa pagina.

Visible

Ottiene o imposta un valore che indica se viene eseguito il rendering di un campo di controllo dati.

Metodi

Nome Descrizione
CloneField()

Crea una copia duplicata dell'oggetto derivato da corrente DataControlField.

CopyProperties(DataControlField)

Copia le proprietà dell'oggetto derivato da corrente DataControlFieldnell'oggetto specificato DataControlField .

CreateField()

In caso di override in una classe derivata, crea un oggetto derivato da vuoto DataControlField.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
ExtractValuesFromCell(IOrderedDictionary, DataControlFieldCell, DataControlRowState, Boolean)

Estrae il valore del campo del controllo dati dalla cella della tabella corrente e aggiunge il valore alla raccolta specificata IDictionary .

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
Initialize(Boolean, Control)

Esegue l'inizializzazione di istanza di base per un campo di controllo dati.

InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32)

Aggiunge testo o controlli alla raccolta di controlli di una cella.

LoadViewState(Object)

Ripristina lo stato di visualizzazione salvata in precedenza della vista origine dati.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
OnFieldChanged()

Genera l'evento FieldChanged.

SaveViewState()

Salva le modifiche apportate allo stato di DataControlField visualizzazione dal momento in cui la pagina è stata pubblicata nel server.

ToString()

Restituisce una stringa che rappresenta questo DataControlField oggetto.

TrackViewState()

Fa in modo che l'oggetto DataControlField possa tenere traccia delle modifiche apportate allo stato di visualizzazione in modo che possano essere archiviate nella proprietà del ViewState controllo e mantenute tra le richieste per la stessa pagina.

ValidateSupportsCallback()

Quando sottoposto a override in una classe derivata, segnala che i controlli contenuti in un campo supportano i callback.

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IDataSourceViewSchemaAccessor.DataSourceViewSchema

Ottiene o imposta lo schema associato a questo DataControlField oggetto.

IStateManager.IsTrackingViewState

Ottiene un valore che indica se l'oggetto DataControlField sta salvando le modifiche apportate allo stato di visualizzazione.

IStateManager.LoadViewState(Object)

Ripristina lo stato di visualizzazione salvato in precedenza del campo del controllo dati.

IStateManager.SaveViewState()

Salva le modifiche apportate allo stato di DataControlField visualizzazione dal momento in cui la pagina è stata pubblicata nel server.

IStateManager.TrackViewState()

Fa in modo che l'oggetto DataControlField possa tenere traccia delle modifiche apportate allo stato di visualizzazione in modo che possano essere archiviate nella proprietà del ViewState controllo e mantenute tra le richieste per la stessa pagina.

Si applica a

Vedi anche