Condividi tramite


DataControlField Classe

Definizione

Funge da classe base per tutti i tipi di campo di controllo dati, che rappresentano una colonna di dati nei controlli associati a dati tabulari, come DetailsView 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 DataControlField, per 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 a come 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 di 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. Di conseguenza, 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

DataControlField()

Inizializza una nuova istanza della classe DataControlField.

Proprietà

AccessibleHeaderText

Ottiene o imposta il testo che viene sottoposto a rendering come valore della proprietà AbbreviatedText in alcuni controlli.

Control

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

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 di progettazione.

FooterStyle

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

FooterText

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

HeaderImageUrl

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

HeaderStyle

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

HeaderText

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

InsertVisible

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

IsTrackingViewState

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

ItemStyle

Ottiene lo stile di tutti i contenuti basati sul testo visualizzati 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 di controllo dati.

SortExpression

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

ValidateRequestMode

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

ViewState

Ottiene un dizionario di informazioni sullo stato che consente di salvare e ripristinare lo stato di visualizzazione di un oggetto DataControlField tra 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

CloneField()

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

CopyProperties(DataControlField)

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

CreateField()

Quando viene sottoposto a override in una classe derivata, crea un oggetto vuoto derivato da 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 di controllo dati dalla cella corrente della tabella e aggiunge il valore all'insieme IDictionary specificato.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
Initialize(Boolean, Control)

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

InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32)

Aggiunge testo o controlli all'insieme dei controlli di una cella.

LoadViewState(Object)

Ripristina lo stato di visualizzazione precedentemente salvato della visualizzazione origine dati.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OnFieldChanged()

Genera l'evento FieldChanged.

SaveViewState()

Salva le modifiche apportate allo stato di visualizzazione DataControlField dal momento in cui è stato eseguito il postback della pagina al server.

ToString()

Restituisce una stringa che rappresenta questo oggetto DataControlField.

TrackViewState()

Mediante questo metodo l'oggetto DataControlField tiene traccia delle modifiche apportate al relativo stato di visualizzazione in modo che possano essere memorizzate nella proprietà ViewState del controllo e mantenute nelle richieste della stessa pagina.

ValidateSupportsCallback()

Quando si esegue l'override in una classe derivata, segnala che i controlli contenuti in un campo supportano i callback.

Implementazioni dell'interfaccia esplicita

IDataSourceViewSchemaAccessor.DataSourceViewSchema

Ottiene o imposta lo schema associato all'oggetto DataControlField.

IStateManager.IsTrackingViewState

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

IStateManager.LoadViewState(Object)

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

IStateManager.SaveViewState()

Salva le modifiche apportate allo stato di visualizzazione DataControlField dal momento in cui è stato eseguito il postback della pagina al server.

IStateManager.TrackViewState()

Mediante questo metodo l'oggetto DataControlField tiene traccia delle modifiche apportate al relativo stato di visualizzazione in modo che possano essere memorizzate nella proprietà ViewState del controllo e mantenute nelle richieste della stessa pagina.

Si applica a

Vedi anche