Compartilhar via


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

  1. 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.

  2. 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.

  3. comutador para ou abra o arquivo de controle de usuário que você acabou criado.

  4. 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" %>
    
  5. 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> 
    
  6. salvar e fechar o arquivo de controle de usuário.

  7. em aberto o código de controle de usuário por trás do arquivo.

  8. 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
    
  9. 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 
    
  10. 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
    
  11. 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

  1. 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.

  2. 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.

  3. Alterne para ou abra o arquivo de classe que você acabou de criar.

  4. 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.

  5. 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 
    
  6. 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
    
  7. 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.

  8. 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

Visão geral de modelo Dados Dinâmicos ASP.NET

Visão geral de dados dinâmicos do ASP.NET