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:
Processar automaticamente o controle adequado para um campo, com base no tipo de dados.
Modelos de controle para cada tipo de dados, que pode ser modificado globalmente para todo o aplicativo de renderização.
Fornecendo validação de dados internos com base no esquema de banco de dados.
Personalizando o renderização de dados para campos individuais, usando atributos do modelo de dados ou usando o UIHint propriedade. Para obter mais informações, consulte Visão geral de modelo Dados Dinâmicos ASP.NET e Como: Personalizar a aparência do campo de dados e o comportamento em um controle de dados dinâmicos, respectivamente.
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
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.
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.
Repetir as etapas anteriores para cada campo de dados que você deseja exibir.
Para adicionar um controle DynamicControl para operações de edição
Adicionar um DynamicControl o controle para o EditItemTemplate modelo do campo controle ou o modelo com dados vinculados.
conjunto o DataField propriedade com o nome da coluna que você deseja edição.
conjunto o Mode propriedade para o Edit, conforme mostrado no exemplo a seguir:
<asp:DynamicControl DataField="ProductName" Mode="Edit" />
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
Adicionar um DynamicControl o controle para o InsertItemTemplate modelo do campo controle ou o modelo com dados vinculados.
conjunto o DataField propriedade com o nome da coluna que você deseja inserir dados para.
conjunto o Mode propriedade para o Insert, conforme mostrado no exemplo a seguir:
<asp:DynamicControl DataField="ProductName" Mode="Insert" />
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