Visão geral de vinculação de dados ASP.NET

Traduções de Artigos Traduções de Artigos
Artigo: 307860 - Ver produtos para os quais este artigo se aplica.
Este artigo se refere a seguir do Microsoft .NET Namespaces da biblioteca de classes do Framework:
  • System. Data
  • System.Data.SqlClient
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo fornece uma introdução a ASP.NET dados vinculação.

Visões gerais ASP.NET adicionais, consulte o seguinte Artigo da Base de dados de Conhecimento da Microsoft:
305140 Roteiro ASP.NET

Mais Informação

ASP.NET de ligação de dados, você pode vincular qualquer controle de servidor para propriedades simples, coleções, e expressões / métodos. Quando você usa ligação de dados, você tem mais flexibilidade quando você usa dados de um banco de dados ou outros meios.

Este artigo aborda a ligação de dados seguintes tópicos:

Princípios básicos de vinculação de dados

< % # %> Sintaxe

ASP.NET apresenta uma nova sintaxe declarativa, < % # % >. Isso a sintaxe é a base para usar associação de dados em uma página. aspx. Ligação de dados de todos os expressões devem estar contidos dentro desses caracteres. A lista a seguir inclui exemplos de ligação de dados simples de várias origens:
  • Propriedade simples (sintaxe de um cliente):
    <%# custID %>
    					
  • Coleção (sintaxe para uma ordem):
    <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">
    					
  • Expressão (sintaxe de um contato):
    <%# ( customer.First Name + " " + customer.LastName ) %>
    					
  • Resultado do método (sintaxe para o saldo pendente):
    <%# GetBalance(custID) %>
    					
Nos exemplos anteriores, o embutido < % # %> marcas indicam onde as informações de uma fonte de dados específico para ser colocado em a página. aspx. Exemplo de ligação de dados a seguir usa um controle de servidor Web TextBox :
<asp:textbox id=txt text="<%# custID %>" runat=server />
				
Para obter mais informações sobre sintaxe de ligação de dados, consulte o seguinte .NET Documentação do Framework Software Development Kit (SDK):
Sintaxe de expressões de ligação de dados
. aspx http://msdn2.microsoft.com/en-us/library/bda9bbfx (vs.71)

Page.DataBind() versus Control.DataBind()

Depois que as fontes de dados específico foi determinadas e definidas para os objetos na página. aspx, você deve vincular os dados a esses dados fontes. Você pode usar o Page.DataBind ou o método Control.DataBind para vincular os dados a fontes de dados.

Ambos métodos funcionam da mesma forma. A principal diferença é que todas as fontes de dados estão vinculadas os controles do servidor após o Page.DataBind método é chamado. Nenhum dado é processado para o controle até que você chamar tanto o método DataBind do controle de servidor Web ou até que você chamar explicitamente o método de Page.DataBind de nível de página. Normalmente, Page.DataBind (ou DataBind) é chamado de evento Page_Load .

Para obter mais informações sobre o método DataBind , consulte a seguinte documentação do SDK do.NET Framework: Método Control.DataBind
http://msdn.microsoft.com/en-us/library/w5e5992d.aspx

Controles de lista ligados a dados

Os controles de lista são controles de servidor Web especiais que podem se vincular para coleções. Você pode usar esses controles para exibir linhas de dados em um formato de modelo personalizado. Todos os controles de lista expõem o DataSource e DataMember propriedades, que são usadas para vincular a coleções.

Esses controles podem vincular sua propriedade DataSource a qualquer coleção que suporta o IEnumerable, o ICollectionou a interface IListSource .

Controle Repeater

O controle Repeater é uma lista de data-bound templated. O controle Repeater é "sem aparência"; ou seja, ele não tem qualquer interno layout ou estilos. Portanto, você deve declarar explicitamente todas layout HTML formatação e marcas de estilo em modelos do controle.

A seguir Exemplos de código demonstram como você pode usar um controle de lista, o controle Repeater para exibir dados:

Observação: você deve modificar os parâmetros da seqüência de conexão como necessário para o seu ambiente.

Visual Basic .NET
<%@ Page Language="vb" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server">
Sub Page_Load(sender As Object, e As EventArgs)

   Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _
                                                "database=pubs;Integrated Security=SSPI")
   Dim cmd As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)
   Dim ds As DataSet = New DataSet()
   cmd.Fill(ds)
   Repeater1.DataSource = ds
   Repeater1.DataBind()

End Sub
</script>
<html>
<body>
   <form id="Form1" method="post" runat="server">
      <asp:Repeater id="Repeater1" runat="server">
         <ItemTemplate>
         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>
	 </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
				
Visual C# .NET
<%@ Page language="c#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server">
void Page_Load(Object sender, EventArgs e) 
{ 
   SqlConnection cnn = new 
       SqlConnection("server=(local);database=pubs;Integrated Security=SSPI"); 
   SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
   DataSet ds = new DataSet(); 
   da.Fill(ds, "authors"); 
   Repeater1.DataSource = ds.Tables["authors"];
   Repeater1.DataBind();
}
</script>
<html>
<body>
   <form id="WebForm2" method="post" runat="server">
      <asp:Repeater id="Repeater1" runat="server">
         <ItemTemplate>
         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>
    	 </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
				
Visual j# .NET
<%@ Page language="VJ#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

 <script runat="server">
void Page_Load(Object sender, EventArgs e) 
{ 
    SqlConnection cnn = new SqlConnection("server=(local);database=pubs;Integrated
         Security=SSPI"); 
    SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
    DataSet ds = new DataSet(); 
    da.Fill(ds, "authors"); 
    DataTableCollection dtc = ds.get_Tables();
    int index = dtc.IndexOf("authors");
    Repeater1.set_DataSource(dtc.get_Item(index));
    Repeater1.DataBind();
}
</script>
<html>
<body>
   <form id="WebForm2" method="post" runat="server">
      <asp:Repeater id="Repeater1" runat="server">
         <ItemTemplate>
         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>
             </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
				
Para obter mais informações sobre o controle Repeater , consulte a seguinte documentação do SDK do.NET Framework:
Controle de servidor Web Repeater
http://msdn.microsoft.com/en-us/library/x8f2zez5.aspx

Controle dataList

A classe DataList é uma lista de rico, modelada, ligados a dados. Você pode modificar os modelos para personalizar este controle. Ao contrário do controle Repeater , DataList suporta renderização direcional e opcionalmente pode processar em um Tabela HTML em tempo de execução.

Para obter mais informações sobre o controle DataList , consulte a seguinte documentação do SDK do.NET Framework:
Controle dataList do servidor Web
. aspx http://msdn.microsoft.com/en-us/library/9cx2f3ks (VS)

Controle DataGrid

O controle DataGrid é uma grade completa, com várias colunas, com dados vinculados. Para Personalizar o layout de colunas individuais no DataGrid, você pode definir o tipo de coluna para "templated" e modificar o modelos da coluna. O controle DataGrid pode processar sem modelos, que faz com que este controle ideal para cenários de emissão de relatórios. DataGrid também suporta seleção, edição, exclusão, paginação e classificação por colunas e colunas de botão.

Para obter mais informações sobre o controle DataGrid , consulte a seguinte documentação do SDK do.NET Framework:
DataGrid Web Server Control
. aspx http://msdn.microsoft.com/en-us/library/aa710742 (VS.71)

Acessando dados

Esta seção descreve como acessar dados de um banco de dados e Vincule dados a controles de lista. Você pode usar o DataSet ou DataReader classe para obter dados de um banco de dados.

Classe DataSet

Um DataSet contém uma representação completa dos dados, incluindo a tabela estrutura, as relações entre tabelas e a ordenação dos dados. Classes DataSet são flexíveis o suficiente para armazenar qualquer tipo de informação de um banco de dados para um arquivo Extensible Markup Language (XML). Classes DataSet são sem estado; ou seja, você pode passar essas classes de cliente para servidor sem vincular recursos de conexão do servidor. A seguir código demonstra como usar um DataSet para vincular dados a um controle:

Observação: você deve modificar os parâmetros da seqüência de conexão como necessário para o seu ambiente.

Visual Basic .NET
Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _
                                             "database=pubs;Integrated Security=SSPI")
Dim cmd As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)
Dim ds As DataSet = New DataSet()
cmd.Fill(ds)
MyRepeater.DataSource = ds
MyRepeater.DataBind() 
				
Visual C# .NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI"); 
SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
DataSet ds = new DataSet(); 
da.Fill(ds);
MyRepeater.DataSource = ds;
MyRepeater.DataBind(); 
				
Visual j# .NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI"); 
SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
DataSet ds = new DataSet(); 
da.Fill(ds); 
MyRepeater.set_DataSource(ds);
MyRepeater.DataBind();
				
Para obter mais informações sobre a classe DataSet , consulte a seguinte documentação do SDK do.NET Framework:
Classe DataSet
. aspx http://msdn2.microsoft.com/en-us/library/System.Data.DataSet (vs.71)

Classe DataReader

Por outro lado, se você só precisará exibir (e não alterar) os dados a ser processado, uma classe DataReader pode ser uma solução melhor. Por exemplo, é melhor usar um DataReader para um DropDownList controle porque o DataReader é um cursor somente de encaminhamento de dados. O código a seguir demonstra como usar uma classe SqlDataReader para ligar dados a um controle:

Visual Basic .NET
Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _
                                             "database=pubs;Integrated Security=SSPI")
Dim cmd As SqlCommand = New SqlCommand("select * from authors", cnn)

cnn.Open()
MyRepeater.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection)
MyRepeater.DataBind()
				
Visual C# .NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI");
SqlCommand cmd = new SqlCommand("select * from authors", cnn);

cnn.Open();
MyRepeater.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection);
MyRepeater.DataBind();
				
Visual j# .NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI"); 

SqlCommand cmd = new SqlCommand("select * from authors", cnn); 

cnn.Open();
MyRepeater.set_DataSource(cmd.ExecuteReader(CommandBehavior.CloseConnection));
MyRepeater.DataBind();
				
Para obter mais informações sobre o acesso a dados e classe SqlDataReader com ASP.NET, consulte os seguintes tópicos no a documentação do SDK do.NET Framework:
Classe SqlDataReader
http://msdn.microsoft.com/en-us/library/System.Data.SqlClient.SqlDataReader.aspx

Desenvolvimento de aplicativos de ASP.NET de alto desempenho
. aspx http://msdn2.microsoft.com/en-us/library/5dws599a (vs.71)

Modelos de lista de controle de ligação

Você pode usar modelos em controles de lista para vincular e Personalize registros individuais de uma fonte de dados. Esta seção inclui três métodos para fazer isso.

Método DataBinder

Quando a fonte de dados funciona com os dados retornados de uma banco de dados, a fonte de dados pode conter várias partes de informações. Você pode Use o método DataBinder genérico para retornar dados. No exemplo de código seguinte, "au_id" campo é retornado da fonte de dados do objeto de recipiente:
<%# DataBinder.Eval(Container.DataItem,"au_id") %>
				
Para obter mais informações sobre o método DataBinder , consulte a seguinte documentação do SDK do.NET Framework:
Método DataBinder
http://msdn.microsoft.com/en-us/library/4hx47hfe.aspx

Conversão explícita

Se você precisar de mais controle, use a conversão explícita. Explícito conversão usa uma palavra-chave conversão de tipo. Essas palavras-chave atuam como funções, mas o compilador gera o código embutido. Portanto, a execução é ligeiramente mais rápida que com uma função chamada. Exemplos de código a seguir usam conversão explícita:

Visual Basic .NET
' DataTable as the DataSource
<%# CType(Container.DataItem, System.Data.DataRowView)("au_id") %>

' DataReader as the DataSource
<%# CType(Container.DataItem, System.Data.Common.DbDataRecord)("au_id") %>

' DataReader as the DataSource
<%# CType(Container.DataItem, System.Data.Common.DbDataRecord)(0) %>
				
Visual C# .NET
// DataTable as the DataSource
<%# ((System.Data.DataRowView)Container.DataItem)["au_id"] %> 

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)["au_id"] %>

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)[0] %>
				
Visual j# .NET
// DataTable as the DataSource
<%# ((System.Data.DataRowView)Container.DataItem)["au_id"] %> 

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)["au_id"] %>

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)[0] %>
				
Observe que o anterior amostras usar tanto um DataTable, que é um subconjunto de um DataSetou DataReader como uma fonte de dados.

Evento ItemDataBound

Você também pode usar o evento ItemDataBound do controle para vincular os dados. Esse evento ocorre quando um item está vinculados ao controle de dados. Exemplo de código HTML a seguir define um controle Repeater com um ItemTemplate:
<asp:repeater id=rptr runat=server>
   <itemtemplate>
      <asp:label id=lblAuthorID runat=server />
   </itemtemplate>
</asp:repeater>
				
Os métodos a seguir são necessários na sua página:

Visual Basic .NET
public Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
  
   'TODO: Retrieve data from a database,
   'and bind the data to a list control.

End Sub

public Sub rptr_OnItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptr.ItemDataBound
   Dim rec As DataRowView
   rec = e.Item.DataItem

   'Make sure that you have the data.
   If Not IsDBNull(rec) Then
      Dim l1 As Label
      l1 = e.Item.FindControl("lblAuthorID")
      l1.Text = rec("au_id").ToString()
   End If
End Sub
				
Visual C# .NET
public void Page_Init(object sender, System.EventArgs e)
{
   rptr.ItemDataBound += new RepeaterItemEventHandler(rptr_OnItemDataBound);
}
public void Page_Load(object sender, System.EventArgs e)
{
   // TODO: Retrieve data from a database,
   // and bind the data to a list control.
}
public void rptr_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
   System.Data.Common.DbDataRecord rec = (System.Data.Common.DbDataRecord)
                                          e.Item.DataItem;
   if(rec!=null) //Make sure that you have the data.
   {
      Label l1 = (Label)e.Item.FindControl("lblAuthorID");
      l1.Text = rec["au_id"].ToString();
   }
}
				
Visual j# .NET
public void Page_Init(Object sender, System.EventArgs e)
{
            rptr.add_ItemDataBound(new RepeaterItemEventHandler(rptr_OnItemDataBound));
}
private void Page_Load(Object sender, System.EventArgs e)
{
            // TODO: Retrieve data from a database,
            // and bind the data to a list control.
}
public void rptr_OnItemDataBound(Object sender, RepeaterItemEventArgs e)
{
            System.Data.Common.DbDataRecord rec = (System.Data.Common.DbDataRecord)
                                                   e.get_Item().get_DataItem();
            if (rec != null) //Make sure that you have the data.
            {
                        Label l1 = (Label)e.get_Item().FindControl("lblAuthorID");
                        l1.set_Text(((rec.get_Item("au_id")).ToString()));
            }
}
				

Propriedades

Artigo: 307860 - Última revisão: 15 de outubro de 2012 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Palavras-chave: 
kbarttyperoadmap kbdatabinding kbinfo kbservercontrols kbmt KB307860 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 307860

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com