DataControlField Classe

Definição

Serve como classe base para todos os tipos de campo de controlo de dados, que representam uma coluna de dados em controlos tabulares com dados limitados, como 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
Herança
DataControlField
Derivado
Atributos
Implementações

Exemplos

O exemplo de código seguinte demonstra como usar BoundField objetos y ButtonField , que derivam de DataControlField, para mostrar linhas num DetailsView controlo. O DetailsView controlo tem a AutoGenerateRows propriedade definida como false, o que lhe permite mostrar um subconjunto dos dados devolvidos pela SelectCommand propriedade.

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

O exemplo de código seguinte demonstra como estender a BoundField classe para criar um campo limitado personalizado que pode ser usado num GridView controlo. Semelhante à CheckBoxField classe, a RadioButtonField classe representa uma coluna de true ou false dados. No entanto, embora os dados a que a CheckBoxField classe está ligada possam ser qualquer conjunto de valores de true ou, false o conjunto de dados a que a RadioButtonField classe está ligada pode ter apenas um true valor em qualquer momento. Este exemplo demonstra como implementar os ExtractValuesFromCell métodos e InitializeCell , dois métodos importantes de todas as classes derivadas de 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

O seguinte exemplo de código demonstra como usar a RadioButtonField classe, que é fornecida no exemplo anterior, num GridView controlo. Neste exemplo, o controlo GridView apresenta dados de uma equipa desportiva. Os dados dos jogadores são mantidos numa tabela de dados que inclui uma coluna de ID, colunas para os nomes dos jogadores e uma coluna verdadeiro ou falso que identifica o capitão da equipa. A RadioButtonField aula serve para mostrar qual membro da equipa é o atual capitão. O GridView controlo pode ser editado para escolher um novo capitão de equipa ou para alterar a informação de outros jogadores.

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

Observações

A DataControlField classe serve como classe base para todos os tipos de campo de controlo de dados. Os campos de controlo de dados são usados por controlos de dados para representar um campo de dados, de forma semelhante a como um DataGridColumn objeto representa um tipo de coluna no DataGrid controlo.

Use as classes derivadas de DataControlField para controlar como um campo de dados é apresentado num controlo limitado por dados, como DetailsView ou GridView. A tabela seguinte lista os diferentes tipos de campos de controlo de dados fornecidos pelo ASP.NET.

Tipo de campo de coluna Description
BoundField Mostra o valor de um campo numa fonte de dados como texto.
ButtonField Exibe um botão de comando num controlo vinculado a dados. Dependendo do controlo, isto permite mostrar uma linha ou uma coluna com um botão personalizado, como um botão Adicionar ou Remover.
CheckBoxField Apresenta uma caixa de seleção num controlo com dados limitados. Este tipo de campo de controlo de dados é comumente usado para exibir campos com valor booleano.
CommandField Exibe botões de comando incorporados para realizar operações de edição, inserção ou eliminação num controlo vinculado a dados.
HyperLinkField Apresenta o valor de um campo numa fonte de dados como um hiperlink. Este tipo de campo de controlo de dados permite-lhe associar um segundo campo à URL do hiperlink.
ImageField Apresenta uma imagem num controlo data-bound.
TemplateField Apresenta conteúdo definido pelo utilizador num controlo vinculado a dados de acordo com um modelo especificado.

Também pode estender as DataControlField classes and BoundField para criar os seus próprios tipos de campo de controlo de dados.

A DataControlField classe fornece muitas propriedades que determinam como os elementos da interface de utilizador (UI) são apresentados no controlo data-bound. Nem todos os controlos usam todas as propriedades disponíveis do campo de controlo de dados ao renderizar uma interface. Por exemplo, o DetailsView controlo, que mostra os campos de controlo de dados como linhas, inclui um elemento de cabeçalho para cada campo de controlo de dados, mas nenhum elemento de rodapé. Portanto, as FooterText propriedades e FooterStyle são ignoradas pelo DetailsView controlo. O GridView controlo, no entanto, usa as FooterText propriedades e FooterStyle se a ShowFooter propriedade estiver definida como true. De forma semelhante, as propriedades do campo de controlo de dados afetam a apresentação dos elementos da interface de utilizador dependendo do elemento correspondente. A ItemStyle propriedade é sempre aplicada ao campo. Se o tipo derivado de DataControlField contiver um controlo, como nas ButtonField classes ou CheckBoxField , a ControlStyle propriedade é aplicada ao campo.

Construtores

Name Description
DataControlField()

Inicializa uma nova instância da DataControlField classe.

Propriedades

Name Description
AccessibleHeaderText

Recebe ou define texto que é renderizado como valor de AbbreviatedText propriedade em alguns controlos.

Control

Obtém uma referência ao controlo de dados ao qual o DataControlField objeto está associado.

ControlStyle

Obtém o estilo de quaisquer controlos de servidor Web contidos pelo DataControlField objeto.

DesignMode

Obtém um valor que indica se um campo de controlo de dados está atualmente visualizado num ambiente em tempo de design.

FooterStyle

Obtém ou define o estilo do rodapé do campo de controlo de dados.

FooterText

Recebe ou define o texto que é exibido no elemento de rodapé de um campo de controlo de dados.

HeaderImageUrl

Obtém ou define a URL de uma imagem que é exibida no elemento do cabeçalho de um campo de controlo de dados.

HeaderStyle

Obtém ou define o estilo do cabeçalho do campo de controlo de dados.

HeaderText

Obtém ou define o texto que é exibido no elemento do cabeçalho de um campo de controlo de dados.

InsertVisible

Recebe um valor que indica se o DataControlField objeto é visível quando o controlo de dados do pai está em modo de inserção.

IsTrackingViewState

Recebe um valor que indica se o DataControlField objeto está a guardar alterações ao seu estado de visualização.

ItemStyle

Obtém o estilo de qualquer conteúdo baseado em texto apresentado por um campo de controlo de dados.

ShowHeader

Recebe ou define um valor que indica se o elemento do cabeçalho de um campo de controlo de dados é renderizado.

SortExpression

Obtém ou define uma expressão de ordenação que é usada por um controlo de fonte de dados para ordenar dados.

ValidateRequestMode

Recebe ou define um valor que especifica se o controlo valida a entrada do cliente.

ViewState

Obtém um dicionário de informação de estado que permite guardar e restaurar o estado de visualização de um DataControlField objeto através de múltiplos pedidos para a mesma página.

Visible

Recebe ou define um valor que indica se um campo de controlo de dados é renderizado.

Métodos

Name Description
CloneField()

Cria uma cópia duplicada do objeto derivado atualmente DataControlField.

CopyProperties(DataControlField)

Copia as propriedades do objeto derivado atual DataControlFieldpara o objeto especificado DataControlField .

CreateField()

Quando sobrescrito numa classe derivada, cria-se um objeto vazio DataControlFieldderivado em .

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
ExtractValuesFromCell(IOrderedDictionary, DataControlFieldCell, DataControlRowState, Boolean)

Extrai o valor do campo de controlo de dados da célula atual da tabela e adiciona o valor à coleção especificada IDictionary .

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
Initialize(Boolean, Control)

Realiza a inicialização básica da instância para um campo de controlo de dados.

InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32)

Adiciona texto ou controlos à coleção de controlos de uma célula.

LoadViewState(Object)

Restaura o estado da vista de fonte de dados anteriormente guardada.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
OnFieldChanged()

Eleva o FieldChanged evento.

SaveViewState()

Guarda as alterações feitas ao DataControlField estado de visualização desde o momento em que a página foi publicada de volta no servidor.

ToString()

Devolve uma cadeia que representa este DataControlField objeto.

TrackViewState()

Faz com que o DataControlField objeto acompanhe alterações ao estado da visualização para que possam ser armazenadas na propriedade do ViewState controlo e persistirem entre pedidos para a mesma página.

ValidateSupportsCallback()

Quando sobreposto numa classe derivada, sinaliza que os controlos contidos por um campo suportam callbacks.

Implementações de Interface Explícita

Name Description
IDataSourceViewSchemaAccessor.DataSourceViewSchema

Obtém ou define o esquema associado a este DataControlField objeto.

IStateManager.IsTrackingViewState

Recebe um valor que indica se o DataControlField objeto está a guardar alterações ao seu estado de visualização.

IStateManager.LoadViewState(Object)

Restaura o estado de visualização previamente guardado do campo de controlo de dados.

IStateManager.SaveViewState()

Guarda as alterações feitas ao DataControlField estado de visualização desde o momento em que a página foi publicada de volta no servidor.

IStateManager.TrackViewState()

Faz com que o DataControlField objeto acompanhe alterações ao estado da visualização para que possam ser armazenadas na propriedade do ViewState controlo e persistirem entre pedidos para a mesma página.

Aplica-se a

Ver também