Partilhar via


DataControlField Classe

Definição

Serve como a classe base para todos os tipos de campo de controle de dados, que representam uma coluna de dados em controles de tabela com associação de dados, 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 a seguir demonstra como usar BoundField e ButtonField objetos, derivados de DataControlField, para exibir linhas em um DetailsView controle. O DetailsView controle tem a AutoGenerateRows propriedade definida como false, o que permite exibir um subconjunto dos dados retornados 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 a seguir demonstra como estender a BoundField classe para criar um campo associado personalizado que pode ser usado em um GridView controle. Semelhante à CheckBoxField classe, a RadioButtonField classe representa uma coluna de true ou false dados. No entanto, embora os dados aos quais a CheckBoxField classe está associada possam ser qualquer conjunto ou false true valores, o conjunto de dados ao qual a RadioButtonField classe está associada pode ter apenas um true valor a qualquer momento. Este exemplo demonstra como implementar os métodos e InitializeCell os ExtractValuesFromCell métodos, 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 exemplo de código a seguir demonstra como usar a RadioButtonField classe, que é fornecida no exemplo anterior, em um GridView controle. Neste exemplo, o GridView controle exibe dados para uma equipe esportiva. Os dados do player são mantidos em uma tabela de dados que inclui uma coluna de ID, colunas para os nomes dos jogadores e uma coluna verdadeira ou falsa que identifica o capitão da equipe. A RadioButtonField classe é usada para exibir qual membro da equipe é o atual capitão da equipe. O GridView controle pode ser editado para escolher um novo capitão da equipe ou para alterar outras informações do jogador.

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

Comentários

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

Use as classes derivadas DataControlField para controlar como um campo de dados é exibido em um controle associado a dados, como DetailsView ou GridView. A tabela a seguir lista os diferentes tipos de campo de controle de dados fornecidos pelo ASP.NET.

Tipo de campo de coluna Descrição
BoundField Exibe o valor de um campo em uma fonte de dados como texto.
ButtonField Exibe um botão de comando em um controle associado a dados. Dependendo do controle, isso permite que você exiba uma linha ou uma coluna com um controle de botão personalizado, como um botão Adicionar ou Remover.
CheckBoxField Exibe uma caixa de seleção em um controle associado a dados. Esse tipo de campo de controle de dados é comumente usado para exibir campos com um valor booliano.
CommandField Exibe botões de comando internos para executar operações de edição, inserção ou exclusão em um controle associado a dados.
HyperLinkField Exibe o valor de um campo em uma fonte de dados como um hiperlink. Esse tipo de campo de controle de dados permite que você associe um segundo campo à URL do hiperlink.
ImageField Exibe uma imagem em um controle associado a dados.
TemplateField Exibe o conteúdo definido pelo usuário em um controle associado a dados de acordo com um modelo especificado.

Você também pode estender as classes e BoundField os DataControlField tipos de campo de controle de dados para criar seus próprios tipos de campo de controle de dados.

A DataControlField classe fornece muitas propriedades que determinam como os elementos de interface do usuário são apresentados no controle associado a dados. Nem todos os controles usam todas as propriedades de campo de controle de dados disponíveis ao renderizar uma interface do usuário. Por exemplo, o DetailsView controle, que exibe os campos de controle de dados como linhas, inclui um item de cabeçalho para cada campo de controle de dados, mas nenhum item de rodapé. Portanto, as propriedades e FooterStyle as FooterText propriedades são ignoradas pelo DetailsView controle. O GridView controle, no entanto, usará as propriedades e FooterStyle se FooterText a ShowFooter propriedade estiver definida como true. Da mesma forma, as propriedades do campo de controle de dados afetam a apresentação de elementos da interface do usuário, dependendo do elemento. A ItemStyle propriedade sempre é aplicada ao campo. Se o tipo derivado contiver DataControlField um controle, como nas classes ou CheckBoxField nas ButtonField classes, a ControlStyle propriedade será aplicada ao campo.

Construtores

DataControlField()

Inicializa uma nova instância da classe DataControlField.

Propriedades

AccessibleHeaderText

Obtém ou define o texto que é renderizado como o valor da propriedade AbbreviatedText em alguns controles.

Control

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

ControlStyle

Obtém o estilo de qualquer controle do servidor Web contido pelo objeto DataControlField.

DesignMode

Obtém um valor que indica se um campo de controle de dados é atualmente exibido em um ambiente de tempo de design.

FooterStyle

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

FooterText

Obtém ou define o texto exibido no item de rodapé de um campo de controle de dados.

HeaderImageUrl

Obtém ou define a URL de uma imagem exibida no item de cabeçalho de um campo de controle de dados.

HeaderStyle

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

HeaderText

Obtém ou define o texto exibido no item de cabeçalho de um campo de controle de dados.

InsertVisible

Obtém um valor que indica se o objeto DataControlField fica visível quando o controle associado a dados pai está no modo de inserção.

IsTrackingViewState

Obtém um valor que indica se o objeto DataControlField está salvando alterações no estado de exibição.

ItemStyle

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

ShowHeader

Obtém ou define um valor que indica se o item de cabeçalho de um campo de controle de dados é renderizado.

SortExpression

Obtém ou define uma expressão de classificação que é usada por um controle de fonte de dados para classificar os dados.

ValidateRequestMode

Obtém ou define um valor que especifica se o controle valida a entrada do cliente.

ViewState

Obtém um dicionário de informações de estado que permite salvar e restaurar o estado de exibição de um objeto DataControlField em várias solicitações da mesma página.

Visible

Obtém ou define um valor que indica se um campo de controle de dados é renderizado.

Métodos

CloneField()

Cria uma cópia duplicada do objeto atual derivado de DataControlField.

CopyProperties(DataControlField)

Copia as propriedades do objeto atual derivado de DataControlField para o objeto DataControlField especificado.

CreateField()

Quando substituído em uma classe derivada, cria um objeto vazio derivado de DataControlField.

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 controle de dados da célula da tabela atual e adiciona o valor à coleção IDictionary especificada.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
Initialize(Boolean, Control)

Executa a inicialização de instância básica para um campo de controle de dados.

InitializeCell(DataControlFieldCell, DataControlCellType, DataControlRowState, Int32)

Adiciona texto ou controles à coleção de controles da célula.

LoadViewState(Object)

Restaura o estado de exibição salvo anteriormente da exibição de fonte de dados.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
OnFieldChanged()

Aciona o evento FieldChanged.

SaveViewState()

Salva as alterações feitas no estado de exibição DataControlField desde a hora em que a página foi postada de volta no servidor.

ToString()

Retorna uma cadeia de caracteres que representa este objeto DataControlField.

TrackViewState()

Faz com que o objeto DataControlField controle as alterações em seu estado de exibição, de modo que elas possam ser armazenadas na propriedade ViewState do controle e persistidas entre solicitações para a mesma página.

ValidateSupportsCallback()

Quando substituído em uma classe derivada, sinaliza que os controles contidos por um campo dão suporte a retornos de chamada.

Implantações explícitas de interface

IDataSourceViewSchemaAccessor.DataSourceViewSchema

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

IStateManager.IsTrackingViewState

Obtém um valor que indica se o objeto DataControlField está salvando alterações no estado de exibição.

IStateManager.LoadViewState(Object)

Restaura o estado de exibição salvo anteriormente do campo de controle de dados.

IStateManager.SaveViewState()

Salva as alterações feitas no estado de exibição DataControlField desde a hora em que a página foi postada de volta no servidor.

IStateManager.TrackViewState()

Faz com que o objeto DataControlField controle as alterações em seu estado de exibição, de modo que elas possam ser armazenadas na propriedade ViewState do controle e persistidas entre solicitações para a mesma página.

Aplica-se a

Confira também