Como: Personalize a exibição de campo de dados no modelo de dados
Este tópico descreve como personalizar a exibição de um campo de dados (tabela de coluna) em dados dinâmicos do ASP.NET, criando seu próprio modelo de campo.As tarefas descritas neste tópico incluem o seguinte:
Crie um modelo de campo personalizado para personalizar a exibição do campo de dados.
Associe o modelo de campo personalizado com o campo de dados.Isso estabelece a conexão do modelo de dados entre o campo de dados e o modelo de campo personalizado para manipular a exibição.
Observação: Quando você personalizar uma exibição do campo de dados Por usando o modelo de dados , a personalização aplica-se a todo o Site da Web.Isso significa que dados dinâmicos usa temp campo personalizado atrasado em vez do padrão modelo ( que é selecionar ED com base no tipo de campo de dados) Para exibir o campo de dados.
Para criar um modelo de campo personalizado
In O gerenciador de soluções, clicar com o botão direito do mouse na pasta DynamicData/FieldTemplates e, em seguida, clique em Adicionar novo item.
Em Modelos instalados, clicar Modelo de campo.
No Nome caixa, insira o nome do controle; você pode usar qualquer nome.Certifique-se de selecionar Coloque o código no arquivo separado box.
comutador para ou abra o arquivo de controle de usuário que você acabou criado.
In the @ Controle directive, add a CodeFile attribute that references the code behind file and an Inherits attribute that references the control class.
<%@ Control Language="C#" CodeFile=MyCustomControl.ascx.cs" Inherits="MyCustomControl" %>
<%@ Control Language="VB" CodeFile=MyCustomControl.ascx.cs" Inherits="MyCustomControl" %>
criar a marcação que será processada para exibir os dados.
O exemplo a seguir mostra um Label controlar cujos Text propriedade estiver definida como a seqüência de valor do campo corrente e cujos OnDataBinding propriedade é definida como um manipulador de eventos personalizado.
<asp:Label id="TextLabel1" OnDataBinding="DataBindingHandler" Text='<%# FieldValueString %>'> </asp:Label>
salvar e fechar o arquivo de controle de usuário.
em aberto o código de controle de usuário por trás do arquivo.
Adicionar o namespace diretiva que se refere a System.Web.DynamicData usando o Imports palavra-chave em Visual Basic ou o using palavra-chave em Visual C#.
using System.Web.DynamicData;
Imports System.Web.DynamicData
Derivar a classe parcial do controle de usuário do FieldTemplateUserControl classe conforme é mostrado a seguir.
partial class MyCustomControl: FieldTemplateUserControl
{ }
Public Partial Class MyCustomControl Inherits _ FieldTemplateUserControl End Class
Para personalizar como o controle exibe o campo de dados, manipular o OnDataBinding evento do controle de usuário. No manipulador, você pode obter o valor do campo de dados corrente do FieldValue propriedade e personalizar a exibição da mesma forma.
O exemplo a seguir mostra como para manipular o OnDataBinding evento.
public void DataBindingHandler(object sender, EventArgs e) { // Define the understocked threshold. short underStockedThreshold = 150; // Get the current number of items in stock. short currentValue = (short)FieldValue; // Check product stock. if (currentValue < underStockedThreshold) { // Customize display here. For example you show the data with //a red background. } }
Public Sub DataBindingHandler(ByVal sender As Object, _ ByVal e As EventArgs) ' Define the understocked threshold. Dim underStockedThreshold As Short = 150 ' Get the current number of items in stock. Dim currentValue As Short = DirectCast(FieldValue, Short) ' Check product stock. If currentValue < underStockedThreshold Then 'Customize display here. For example you show the data with 'a red background. End If End Sub
fechar o código de controle de usuário por trás do arquivo.Agora você criou um modelo de campo personalizado.
Para associar um modelo de campo personalizado um campo de dados
In O gerenciador de soluções, clicar com o botão direito do mouse na posta App_Code pasta e, em seguida, clique em Adicionar novo item.
Em Modelos instalados, clicar Classe.
No Nome, digite o nome da tabela de banco de dados que contém os dados para o modelo de campo personalizado exibir.
Por exemplo, se o controle personalizado irá exibir os dados da tabela Produtos, nome de arquivo é Products.cs ou Product.vb e o nome de classe é Product. Esse arquivo irá conter também uma classe auxiliar que permite que você personalize a exibição do campo de dados.
Alterne para ou abra o arquivo de classe que você acabou de criar.
Adicionar o Partial palavra-chave em Visual Basic ou o partial palavra-chave em Visual C# a definição de classe para torná-lo em uma classe parcial.
Adicione a diretiva de espaço para nome se refere a System.Web.DynamicData, e System.ComponentModel.DataAnnotations, usando o Imports palavra-chave em Visual Basic ou o using palavra-chave em Visual C#.
using System.Web.DynamicData; using System.ComponentModel.DataAnnotations;
Imports System.Web.DynamicData Imports System.ComponentModel.DataAnnotations
Adicionar o MetadataTypeAttribute o atributo à definição de classe parcial. Parâmetro o atributo do é o nome da classe auxiliar de metadados que você criar para lidar com a personalização de exibição de campo de dados.
[MetadataType(typeof(ProductMetadata))] public partial class Product { }
<MetadataType(GetType(ProductMetadata))> _ Public Partial Class Product End Class
criar uma classe que atuará sistema autônomo a classe auxiliar de metadados.Você pode usar qualquer nome para a classe, mas o nome de classe deve corresponder ao nome que é referenciado no MetadataTypeAttribute atributo na etapa anterior.
Na classe metadados, crie um campo cujo nome corresponde a dados field to display.Marcar o campo usando o UIHintAttribute atributo, especificando o nome do modelo do campo personalizado usado para exibição.
A única finalidade da classe auxiliar é fornecer um local para definir o UIHintAttribute o atributo, para que você não precise adicionar qualquer Outros código à classe.
O exemplo a seguir mostra uma definição completa para a classe de metadados que inclui um campo único (com o UIHintAttribute atributo) que define a exibição personalizada para o campo UnidadesEmEstoque.
public class ProductMetadata [UIHint("UnitsInStock")] public object UnitsInStock; }
Public Class ProductMetadata <UIHint("UnitsInStock")> _ Public UnitsInStock As Object End Class
Exemplo
O exemplo a seguir mostra um modelo de campo personalizado que verifica o nível de estoque do produto.Se um produto understocked, o modelo de campo exibe o valor por meio de primeiro plano vermelho.
<%@ Control Language="VB" CodeFile="UnitsInStock.ascx.vb"
Inherits="DynamicData_FieldTemplates_UnitsInStock" %>
<asp:Label id="TextLabel1" OnDataBinding="DataBindingHandler"
Text='<%# FieldValueString %>' ></asp:Label>
<%@ Control Language="C#" CodeFile="UnitsInStock.ascx.cs"
Inherits="DynamicData_FieldTemplates_UnitsInStock" %>
<asp:Label id="TextLabel1" OnDataBinding="DataBindingHandler"
Text='<%# FieldValueString %>' ></asp:Label>
Imports System.Web.DynamicData
Partial Public Class DynamicData_FieldTemplates_UnitsInStock
Inherits FieldTemplateUserControl
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
End Sub
' DataBinding event handler.
Public Sub DataBindingHandler(ByVal sender As Object, _
ByVal e As EventArgs)
' Define product understocked threshold.
Dim underStockedThreshold As Short = 150
' Get the current number of items in stock.
Dim currentValue As Short = DirectCast(FieldValue, Short)
' Check product stock.
If currentValue < underStockedThreshold Then
' The product is understocked, set its
' foreground color to red.
TextLabel1.ForeColor = System.Drawing.Color.Red
End If
End Sub
End Class
using System.Web.DynamicData;
public partial class DynamicData_FieldTemplates_UnitsInStock : FieldTemplateUserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
// DataBinding event handler.
public void DataBindingHandler(object sender, EventArgs e)
{
// Define product understocked threshold.
short underStockedThreshold = 150;
// Get the current number of items in stock.
short currentValue = (short)FieldValue;
// Check product stock.
if (currentValue < underStockedThreshold)
{
// The product is understocked, set its
// foreground color to red.
TextLabel1.ForeColor = System.Drawing.Color.Red;
}
}
}
Compilando o código
Microsoft Visual Studio 2008 serviço empacotar 1 ou Visual Web Developer 2008 Express Edition serviço empacotar 1.
O banco de dados de exemplo AdventureWorksLT.Para obter informações sobre como baixar e instalar o banco de dados de exemplo do SQL servidor, consulte Exemplos de produtos do Microsoft SQL servidor: Banco de dados no site da CodePlex.Certifique-se de instalar a versão correta do banco de dados de exemplo para a versão do SQL servidor que você está executando (Microsoft SQL Server 2005 ou Microsoft SQL Server 2008).
Um site da Web dinâmico de dados.Isso permite que você criar um contexto de dados para o banco de dados e a classe que contém o campo de dados para personalizar e os métodos para substituir.Além disso, ele cria o ambiente usar a página descrita antes.Para obter mais informações, consulte Demonstra Passo a passo: Criando um novo site do Dynamic dados Using a scaffolding.
Consulte também
Tarefas
Como: Personalizar dados campo aparência e o comportamento no modelo de dados
Demonstra Passo a passo: Adicionando dados dinâmicos a um site existente
Conceitos
Visão geral do ASP.NET dinâmico dados campo modelos