Compartilhar via


Como: Usar dados dinâmicos do ASP.NET em Templated Data-limite Controls

Você pode usar dados dinâmicos do ASP.NET com data-limite controles que usam modelos, sistema autônomo ListView, FormView e Repeater. Trabalhando com modelos, você pode ter controle completo sobre o layout e aparência dos dados no controle, mas as páginas são específicas para a tabela que você está trabalhando, pois os modelos não podem gerar automaticamente colunas.Isso é útil quando você desejar criar páginas personalizadas que usam recursos de dados dinâmicos com os controles ligados a dados com modelo.

Ao trabalhar com dados modelados-limite controles, você pode adicionar o DynamicControl controle de seus modelos para utilizar dados dinâmicos funcionalidade. Quando você usa um DynamicControl controle, você usufruir os seguintes recursos de dados dinâmicos:

Além de ser usado o DynamicControl controle no modelo data-limite controles, você pode usá-lo em um TemplateField campo de um GridView ou um DetailsView controle.

Executar um exemplo desse recurso online.

Para adicionar um controle DynamicControl para exibir dados

  1. Adicionar um DynamicControl controle a um dos modelos do controle limite a dados.

    Observação:

    Geralmente você adicionar campos somente leitura a ItemTemplate modelo com controles modelados, porque esse é o responsável pela exibição de dados de modelo. No entanto, você também pode adicionar um campo somente leitura para outros modelos quando você não deseja que o valor do campo a ser modificada.

  2. conjunto o DataField propriedade para o nome da coluna que você deseja exibir, sistema autônomo mostrado no exemplo a seguir:

    <asp:DynamicControl 
      DataField="ProductName"
       />
    
    Observação:

    O valor padrão para o Mode propriedade é ReadOnly, para que não precisem conjunto esta propriedade para exibir somente os dados.

  3. Repetir as etapas anteriores para cada campo de dados que você deseja exibir.

Para adicionar um controle DynamicControl para operações de edição

  1. Adicionar um DynamicControl o controle para o EditItemTemplate modelo do campo controle ou o modelo com dados vinculados.

  2. conjunto o DataField propriedade com o nome da coluna que você deseja edição.

  3. conjunto o Mode propriedade para o Edit, conforme mostrado no exemplo a seguir:

    <asp:DynamicControl 
      DataField="ProductName"
      Mode="Edit"
       />
    
  4. Repetir as etapas anteriores para cada campo de dados que você deseja edição.

Para adicionar um controle DynamicControl para operações de inserção

  1. Adicionar um DynamicControl o controle para o InsertItemTemplate modelo do campo controle ou o modelo com dados vinculados.

  2. conjunto o DataField propriedade com o nome da coluna que você deseja inserir dados para.

  3. conjunto o Mode propriedade para o Insert, conforme mostrado no exemplo a seguir:

    <asp:DynamicControl 
      DataField="ProductName"
      Mode="Insert"
       />
    
  4. Repetir as etapas anteriores para cada campo de dados que você deseja inserir dados.

Exemplo

O exemplo a seguir mostra um FormView controle que usa DynamicControl controles para criar uma página personalizada que usa recursos de dados dinâmicos.

<%@ Page Language="VB" %>

<script >

  Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
    DynamicDataManager1.RegisterControl(FormView1)
  End Sub

</script>

<!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 >
  <title>DynamicControl and Templated Data-Bound Controls Sample</title>
  <link href="~/Site.css" rel="stylesheet" type="text/css" />
</head>
<body>
  <form id="form1" >
    <div>

      <h2>Address Table</h2>

      <asp:DynamicDataManager ID="DynamicDataManager1" 
        AutoLoadForeignKeys="true" />

      <asp:FormView ID="FormView1"  
        DataSourceID="FormDataSource" 
        AllowPaging="true">
        <ItemTemplate>
          <table>
            <tr>
              <td>Address Line 1:</td>
              <td>
                <asp:DynamicControl  DataField="AddressLine1" />
              </td>
            </tr>
            <tr>
              <td>Address Line 2:</td>
              <td>
                <asp:DynamicControl  DataField="AddressLine2" />
              </td>
            </tr>
            <tr>
              <td>City:</td>
              <td>
                <asp:DynamicControl  DataField="City" />
              </td>
            </tr>
            <tr>
              <td>State/Province:</td>
              <td>
                <asp:DynamicControl  DataField="StateProvince" />
              </td>
            </tr>
            <tr>
              <td>Country:</td>
              <td>
                <asp:DynamicControl  DataField="CountryRegion" />
              </td>
            </tr>
            <tr>
              <td>Postal Code:</td>
              <td>
                <asp:DynamicControl  DataField="PostalCode" />
              </td>
            </tr>
            <tr>
              <td colspan="2">
                <asp:LinkButton ID="InsertButton"  CommandName="New" CausesValidation="false" Text="New" />
                <asp:LinkButton ID="EditButton"  CommandName="Edit" CausesValidation="false" Text="Edit" />
                <asp:LinkButton ID="DeleteButton"  CommandName="Delete" CausesValidation="false" Text="Delete" />
              </td>
            </tr>
          </table>
        </ItemTemplate>
        <EditItemTemplate>
          <table>
            <tr>
              <td>Address Line 1:</td>
              <td>
                <asp:DynamicControl  DataField="AddressLine1" Mode="Edit" />
              </td>
            </tr>
            <tr>
              <td>Address Line 2:</td>
              <td>
                <asp:DynamicControl  DataField="AddressLine2" Mode="Edit" />
              </td>
            </tr>
            <tr>
              <td>City:</td>
              <td>
                <asp:DynamicControl  DataField="City" Mode="Edit" />
              </td>
            </tr>
            <tr>
              <td>State/Province:</td>
              <td>
                <asp:DynamicControl  DataField="StateProvince" Mode="Edit" />
              </td>
            </tr>
            <tr>
              <td>Country:</td>
              <td>
                <asp:DynamicControl  DataField="CountryRegion" Mode="Edit" />
              </td>
            </tr>
            <tr>
              <td>Postal Code:</td>
              <td>
                <asp:DynamicControl  DataField="PostalCode" Mode="Edit" />
              </td>
            </tr>
            <tr>
              <td colspan="2">
                <asp:LinkButton ID="UpdateButton"  CommandName="Update">Update</asp:LinkButton>
                <asp:LinkButton ID="CancelEditButton"  CommandName="Cancel" CausesValidation="false">Cancel</asp:LinkButton>
              </td>
            </tr>
          </table>
        </EditItemTemplate>
        <InsertItemTemplate>
          <table>
            <tr>
              <td>Address Line 1:</td>
              <td>
                <asp:DynamicControl  DataField="AddressLine1" Mode="Insert" />
              </td>
            </tr>
            <tr>
              <td>Address Line 2:</td>
              <td>
                <asp:DynamicControl  DataField="AddressLine2" Mode="Insert" />
              </td>
            </tr>
            <tr>
              <td>City:</td>
              <td>
                <asp:DynamicControl  DataField="City" Mode="Insert" />
              </td>
            </tr>
            <tr>
              <td>State/Province:</td>
              <td>
                <asp:DynamicControl  DataField="StateProvince" Mode="Insert" />
              </td>
            </tr>
            <tr>
              <td>Country:</td>
              <td>
                <asp:DynamicControl  DataField="CountryRegion" Mode="Insert" />
              </td>
            </tr>
            <tr>
              <td>Postal Code:</td>
              <td>
                <asp:DynamicControl  DataField="PostalCode" Mode="Insert" />
              </td>
            </tr>
            <tr>
              <td colspan="2">
                <asp:LinkButton ID="InsertButton"  CommandName="Insert" Text="Insert" />
                <asp:LinkButton ID="CancelInsertButton"  CommandName="Cancel" CausesValidation="false" Text="Cancel" />
              </td>
            </tr>
          </table>
        </InsertItemTemplate>
        <PagerSettings Position="Bottom" Mode="NumericFirstLast" />
      </asp:FormView>

      <!-- This example uses Microsoft SQL Server and connects   -->
      <!-- to the AdventureWorksLT sample database.              -->
      <asp:LinqDataSource ID="FormDataSource" 
        TableName="Addresses" 
        ContextTypeName="AdventureWorksLTDataContext"
        EnableDelete="true"
        EnableInsert="true"
        EnableUpdate="true">
      </asp:LinqDataSource>

    </div>
  </form>
</body>
</html>
<%@ Page Language="C#" %>

<script >
    protected void Page_Init(object sender, EventArgs e) {
        DynamicDataManager1.RegisterControl(FormView1);
    }
</script>

<!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 >
  <title>DynamicControl and Templated Data-Bound Controls Sample</title>
  <link href="~/Site.css" rel="stylesheet" type="text/css" />
</head>
<body>
  <form id="form1" >
    <div>

      <h2>Address Table</h2>

      <asp:DynamicDataManager ID="DynamicDataManager1" 
        AutoLoadForeignKeys="true" />

      <asp:FormView ID="FormView1"  
        DataSourceID="FormDataSource" 
        AllowPaging="true">
        <ItemTemplate>
          <table>
            <tr>
              <td>Address Line 1:</td>
              <td>
                <asp:DynamicControl  DataField="AddressLine1" />
              </td>
            </tr>
            <tr>
              <td>Address Line 2:</td>
              <td>
                <asp:DynamicControl  DataField="AddressLine2" />
              </td>
            </tr>
            <tr>
              <td>City:</td>
              <td>
                <asp:DynamicControl  DataField="City" />
              </td>
            </tr>
            <tr>
              <td>State/Province:</td>
              <td>
                <asp:DynamicControl  DataField="StateProvince" />
              </td>
            </tr>
            <tr>
              <td>Country:</td>
              <td>
                <asp:DynamicControl  DataField="CountryRegion" />
              </td>
            </tr>
            <tr>
              <td>Postal Code:</td>
              <td>
                <asp:DynamicControl  DataField="PostalCode" />
              </td>
            </tr>
            <tr>
              <td colspan="2">
                <asp:LinkButton ID="InsertButton"  CommandName="New" CausesValidation="false" Text="New" />
                <asp:LinkButton ID="EditButton"  CommandName="Edit" CausesValidation="false" Text="Edit" />
                <asp:LinkButton ID="DeleteButton"  CommandName="Delete" CausesValidation="false" Text="Delete" />
              </td>
            </tr>
          </table>
        </ItemTemplate>
        <EditItemTemplate>
          <table>
            <tr>
              <td>Address Line 1:</td>
              <td>
                <asp:DynamicControl  DataField="AddressLine1" Mode="Edit" />
              </td>
            </tr>
            <tr>
              <td>Address Line 2:</td>
              <td>
                <asp:DynamicControl  DataField="AddressLine2" Mode="Edit" />
              </td>
            </tr>
            <tr>
              <td>City:</td>
              <td>
                <asp:DynamicControl  DataField="City" Mode="Edit" />
              </td>
            </tr>
            <tr>
              <td>State/Province:</td>
              <td>
                <asp:DynamicControl  DataField="StateProvince" Mode="Edit" />
              </td>
            </tr>
            <tr>
              <td>Country:</td>
              <td>
                <asp:DynamicControl  DataField="CountryRegion" Mode="Edit" />
              </td>
            </tr>
            <tr>
              <td>Postal Code:</td>
              <td>
                <asp:DynamicControl  DataField="PostalCode" Mode="Edit" />
              </td>
            </tr>
            <tr>
              <td colspan="2">
                <asp:LinkButton ID="UpdateButton"  CommandName="Update">Update</asp:LinkButton>
                <asp:LinkButton ID="CancelEditButton"  CommandName="Cancel" CausesValidation="false">Cancel</asp:LinkButton>
              </td>
            </tr>
          </table>
        </EditItemTemplate>
        <InsertItemTemplate>
          <table>
            <tr>
              <td>Address Line 1:</td>
              <td>
                <asp:DynamicControl  DataField="AddressLine1" Mode="Insert" />
              </td>
            </tr>
            <tr>
              <td>Address Line 2:</td>
              <td>
                <asp:DynamicControl  DataField="AddressLine2" Mode="Insert" />
              </td>
            </tr>
            <tr>
              <td>City:</td>
              <td>
                <asp:DynamicControl  DataField="City" Mode="Insert" />
              </td>
            </tr>
            <tr>
              <td>State/Province:</td>
              <td>
                <asp:DynamicControl  DataField="StateProvince" Mode="Insert" />
              </td>
            </tr>
            <tr>
              <td>Country:</td>
              <td>
                <asp:DynamicControl  DataField="CountryRegion" Mode="Insert" />
              </td>
            </tr>
            <tr>
              <td>Postal Code:</td>
              <td>
                <asp:DynamicControl  DataField="PostalCode" Mode="Insert" />
              </td>
            </tr>
            <tr>
              <td colspan="2">
                <asp:LinkButton ID="InsertButton"  CommandName="Insert" Text="Insert" />
                <asp:LinkButton ID="CancelInsertButton"  CommandName="Cancel" CausesValidation="false" Text="Cancel" />
              </td>
            </tr>
          </table>
        </InsertItemTemplate>
        <PagerSettings Position="Bottom" Mode="NumericFirstLast" />
      </asp:FormView>

      <!-- This example uses Microsoft SQL Server and connects   -->
      <!-- to the AdventureWorksLT sample database.              -->
      <asp:LinqDataSource ID="FormDataSource" 
        TableName="Addresses" 
        ContextTypeName="AdventureWorksLTDataContext"
        EnableDelete="true"
        EnableInsert="true"
        EnableUpdate="true">
      </asp:LinqDataSource>

    </div>
  </form>
</body>
</html>

Compilando o código

Este exemplo requer:

  • Um site dinâmico dados ou um aplicativo Web dinâmico de dados.

  • Talvez o AdventureWorks ou banco de dados de exemplo AdventureWorksLT.Para obter informações sobre como baixar e instalar o exemplo do SQL servidor, consulte Exemplos de produtos do Microsoft SQL servidor: Banco de dados no site da CodePlex.Certifique-se de que você instalar a versão correta do banco de dados de exemplo para a versão do SQL servidor que você está executando (SQL servidor 2005 ou SQL servidor 2008).

  • Uma classe LINQ to SQL que está configurado para acessar o endereço tabela do banco de dados AdventureWorks ou AdventureWorksLT.

  • O contexto de dados é registrado com o mecanismo de dados dinâmicos no arquivo global.asax.

  • As colunas rowguid e ModifiedData da tabela de endereços são conjunto seja automaticamente gerado no designer relacional do objeto.Em outras palavras, certifique-se de que o IsDbGenerated propriedade essas duas colunas é definida como true. Isso é necessário para a operação de inserção somente.

Programação robusta

As seguintes condições podem causar uma exceção:

  • O banco de dados não está disponível.

Consulte também

Conceitos

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

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

Referência

DynamicControl

DetailsView

FormView

GridView

ListView

Repeater