Sdílet prostřednictvím


DataControlField Třída

Definice

Slouží jako základní třída pro všechny typy polí ovládacích prvků dat, které představují sloupec dat v tabulkových ovládacích prvcích vázaných na data, jako DetailsView je například a 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
Dědičnost
DataControlField
Odvozené
Atributy
Implementuje

Příklady

Následující příklad kódu ukazuje, jak používat BoundField a ButtonField objekty, které jsou odvozeny z DataControlField, zobrazit řádky v ovládacím DetailsView prvku. Ovládací DetailsView prvek má vlastnost nastavena AutoGenerateRows na false, což umožňuje zobrazit podmnožinu dat vrácených SelectCommand vlastností.

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

Následující příklad kódu ukazuje, jak rozšířit BoundField třídu vytvořit vlastní vázané pole, které lze použít v ovládacím GridView prvku. CheckBoxField Podobně jako třída RadioButtonField představuje třída sloupec true nebo false data. Ačkoli data, ke kterým CheckBoxField je třída vázána, mohou být libovolnou množinou true nebo false hodnotami, sada dat, na která RadioButtonField je třída vázána, může mít v daném okamžiku pouze jednu true hodnotu. Tento příklad ukazuje, jak implementovat ExtractValuesFromCell a InitializeCell metody, dvě důležité metody všech tříd odvozených z 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

Následující příklad kódu ukazuje použití RadioButtonField třídy, která je uvedena v předchozím příkladu v ovládacím prvku GridView . V tomto příkladu GridView ovládací prvek zobrazí data pro sportovní tým. Data hráče se uchovávají v tabulce dat, která obsahuje sloupec ID, sloupce pro jména hráčů a pravdivý nebo nepravdivý sloupec, který identifikuje kapitána týmu. Třída RadioButtonField slouží k zobrazení toho, který člen týmu je aktuálním kapitánem týmu. Ovládací GridView prvek můžete upravit a zvolit nového kapitána týmu nebo změnit další informace o hráči.

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

Poznámky

Třída DataControlField slouží jako základní třída pro všechny typy polí ovládacích prvků dat. Ovládací prvky dat používají ovládací prvky vázané na data k reprezentaci pole dat, podobně jako DataGridColumn objekt představuje typ sloupce v ovládacím DataGrid prvku.

Použijte třídy odvozené k DataControlField řízení způsobu zobrazení pole dat v ovládacím prvku vázaném na data, jako je nebo DetailsView GridView. V následující tabulce jsou uvedeny různé typy polí ovládacích prvků dat poskytované ASP.NET.

Typ pole sloupce Description
BoundField Zobrazí hodnotu pole ve zdroji dat jako text.
ButtonField Zobrazí příkazové tlačítko v ovládacím prvku vázaném na data. V závislosti na ovládacím prvku to umožňuje zobrazit řádek nebo sloupec s vlastním tlačítkem, například přidat nebo odebrat tlačítko.
CheckBoxField Zobrazí zaškrtávací políčko v ovládacím prvku vázaném na data. Tento typ pole ovládacího prvku dat se běžně používá k zobrazení polí s logickou hodnotou.
CommandField Zobrazí integrovaná příkazová tlačítka pro provádění operací úprav, vkládání nebo odstraňování v ovládacím prvku vázaném na data.
HyperLinkField Zobrazí hodnotu pole ve zdroji dat jako hypertextový odkaz. Tento typ pole ovládacího prvku dat umožňuje svázat druhé pole s adresou URL hypertextového odkazu.
ImageField Zobrazí obrázek v ovládacím prvku vázaném na data.
TemplateField Zobrazí uživatelem definovaný obsah v ovládacím prvku vázaném na data podle zadané šablony.

Můžete také rozšířit třídy DataControlField a BoundField vytvořit vlastní typy polí ovládacího prvku dat.

Třída DataControlField poskytuje mnoho vlastností, které určují, jak jsou prvky uživatelského rozhraní prezentovány v ovládacím prvku vázaném na data. Ne každý ovládací prvek používá při vykreslování uživatelského rozhraní vlastnost každého dostupného pole ovládacího prvku dat. Například DetailsView ovládací prvek, který zobrazuje pole ovládacího prvku dat jako řádky, obsahuje položku záhlaví pro každé pole ovládacího prvku dat, ale žádná položka zápatí. FooterText Proto ovládací prvek ignoruje vlastnosti a FooterStyle vlastnostiDetailsView. Ovládací GridView prvek však používá FooterText a FooterStyle vlastnosti, pokud ShowFooter je vlastnost nastavena na true. Podobně vlastnosti pole ovládacího prvku dat ovlivňují prezentaci prvků uživatelského rozhraní v závislosti na tom, co je prvek. Vlastnost ItemStyle se vždy použije u pole. Pokud typ odvozený z DataControlField obsahuje ovládací prvek, jako ve třídách CheckBoxField ButtonField, ControlStyle vlastnost se použije na pole.

Konstruktory

DataControlField()

Inicializuje novou instanci DataControlField třídy.

Vlastnosti

AccessibleHeaderText

Získá nebo nastaví text, který je vykreslen jako AbbreviatedText hodnota vlastnosti v některých ovládacích prvcích.

Control

Získá odkaz na ovládací prvek dat, ke kterému DataControlField je objekt přidružen.

ControlStyle

Získá styl všech webových server ovládacích prvků obsažených objektem DataControlField .

DesignMode

Získá hodnotu označující, zda je pole ovládacího prvku dat aktuálně zobrazeno v návrhovém prostředí.

FooterStyle

Získá nebo nastaví styl zápatí pole ovládacího prvku dat.

FooterText

Získá nebo nastaví text, který je zobrazen v zápatí položky pole ovládacího prvku dat.

HeaderImageUrl

Získá nebo nastaví adresu URL obrázku, který se zobrazí v položce záhlaví pole ovládacího prvku dat.

HeaderStyle

Získá nebo nastaví styl záhlaví pole ovládacího prvku dat.

HeaderText

Získá nebo nastaví text zobrazený v položce záhlaví pole ovládacího prvku dat.

InsertVisible

Získá hodnotu označující, zda DataControlField je objekt viditelný, když je nadřazený ovládací prvek vázané na data v režimu vložení.

IsTrackingViewState

Získá hodnotu určující, zda DataControlField objekt ukládá změny do stavu zobrazení.

ItemStyle

Získá styl libovolného textového obsahu zobrazeného polem ovládacího prvku dat.

ShowHeader

Získá nebo nastaví hodnotu určující, zda je položka záhlaví pole ovládacího prvku dat vykreslena.

SortExpression

Získá nebo nastaví výraz řazení, který používá ovládací prvek zdroje dat k řazení dat.

ValidateRequestMode

Získá nebo nastaví hodnotu, která určuje, zda ovládací prvek ověřuje vstup klienta.

ViewState

Získá slovník informací o stavu, který umožňuje uložit a obnovit stav DataControlField zobrazení objektu napříč více požadavky na stejnou stránku.

Visible

Získá nebo nastaví hodnotu označující, zda je pole ovládacího prvku dat vykresleno.

Metody

CloneField()

Vytvoří duplicitní kopii aktuálního DataControlFieldodvozeného objektu.

CopyProperties(DataControlField)

Zkopíruje vlastnosti aktuálního DataControlField-odvozeného objektu do zadaného DataControlField objektu.

CreateField()

Při přepsání v odvozené třídě vytvoří prázdný DataControlField-odvozený objekt.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
ExtractValuesFromCell(IOrderedDictionary, DataControlFieldCell, DataControlRowState, Boolean)

Extrahuje hodnotu pole ovládacího prvku dat z aktuální buňky tabulky a přidá hodnotu do zadané IDictionary kolekce.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
Initialize(Boolean, Control)

Provede základní inicializaci instance pro pole ovládacího prvku dat.

InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32)

Přidá do kolekce ovládacích prvků buňky text nebo ovládací prvky.

LoadViewState(Object)

Obnoví dříve uložený stav zobrazení zdroje dat.

MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
OnFieldChanged()

Vyvolá FieldChanged událost.

SaveViewState()

Uloží změny provedené ve DataControlField stavu zobrazení od doby, kdy byla stránka publikována zpět na server.

ToString()

Vrátí řetězec, který představuje tento DataControlField objekt.

TrackViewState()

Způsobí, DataControlField že objekt bude sledovat změny ve stavu zobrazení, aby je bylo možné uložit do vlastnosti ovládacího prvku ViewState a zachovat napříč požadavky na stejnou stránku.

ValidateSupportsCallback()

Při přepsání v odvozené třídě signalizuje, že ovládací prvky obsažené v poli podporují zpětné volání.

Explicitní implementace rozhraní

IDataSourceViewSchemaAccessor.DataSourceViewSchema

Získá nebo nastaví schéma přidružené k tomuto DataControlField objektu.

IStateManager.IsTrackingViewState

Získá hodnotu označující, zda DataControlField objekt ukládá změny do stavu zobrazení.

IStateManager.LoadViewState(Object)

Obnoví dříve uložený stav zobrazení pole ovládacího prvku dat.

IStateManager.SaveViewState()

Uloží změny provedené ve DataControlField stavu zobrazení od doby, kdy byla stránka publikována zpět na server.

IStateManager.TrackViewState()

Způsobí, DataControlField že objekt bude sledovat změny ve stavu zobrazení, aby je bylo možné uložit do vlastnosti ovládacího prvku ViewState a zachovat napříč požadavky na stejnou stránku.

Platí pro

Viz také