DataControlField Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |
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 |
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. |