Ligação a dados usando o controle de fonte de dados

Os controles da fonte de dados ampliam muito os recursos dos controles ligados a dados, como os controles GridView, FormView e DetailsView.Trabalhando juntos, os controles da fonte de dados e os controles ligados a dados permitem a você recuperar, modificar, executar paginação, classificar e filtrar dados de fontes de dados diferentes com pouco ou nenhum código.

Você pode trabalhar com dados em um controle vinculado a dados ligando o controle vinculado a dados à um controle da fonte de dados como um controle LinqDataSource, ObjectDataSource, ou SqlDataSource. O controle da fonte de dados se conecta a uma fonte de dados como um banco de dados, entidade de classe ou camada intermediária de objeto e, em seguida, recupera ou atualiza dados. O controle vinculado aos dados pode então usar esses dados. Para executar a ligação, defina a propriedade DataSourceID do controle associado a dados para apontar para um controle da fonte de dados. Quando um controle vinculado a dados está vinculado a um controle de fonte de dados, pouco ou nenhum código adicional é necessário para operações de dados. O controle vinculado a dados pode automaticamente aproveitar os serviços de dados fornecidos pelo controle da fonte de dados.

ObservaçãoObservação:

Em versões anteriores do ASP.NET, controles ligados a dados eram vinculados a dados usando a propriedade DataSource. Isso exigiu que você escreva códigos para lidar com operações como a exibição, paginação, classificação, edição e exclusão de dados. Embora você possa vincular controles a dados usando a propriedade DataSource (e usar o código existente), você pode também executar associação de dados usando a propriedade DataSourceID em vez disso.Em geral, o uso da propriedade DataSourceID fornece mais funcionalidade automática do que o uso da propriedade DataSource.

O exemplo a seguir mostra um controle FormView que é vinculado a um controle LinqDataSource para exibir dados de um banco de dados. Para que o exemplo funcione, você deve criar classes que representam o banco de dados e a tabela. Você pode criar essas classes usando o Designer Relacional de Objetos. Para obter mais informações, consulte Object Relational Designer (O/R Designer).

<%@ Page language="C#" %>
<!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 runat="server">
    <title>FormView Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <h3>FormView Example</h3>
        <table cellspacing="10"> 
          <tr>               
            <td valign="top">

              <asp:FormView ID="ProductsFormView"
                DataSourceID="LinqDataSource1"
                AllowPaging="true"
                runat="server">

                <HeaderStyle forecolor="white" backcolor="Blue" />                

                <ItemTemplate>
                  <table>
                    <tr>
                      <td align="right"><b>Product ID:</b></td>
                      <td><asp:Label id="ProductIDLabel" runat="server" Text='<%# Eval("ProductID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Product Name:</b></td>
                      <td><asp:Label id="ProductNameLabel" runat="server" Text='<%# Eval("ProductName") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Category ID:</b></td>
                      <td><asp:Label id="CategoryIDLabel" runat="server" Text='<%# Eval("CategoryID") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Quantity Per Unit:</b></td>
                      <td><asp:Label id="QuantityPerUnitLabel" runat="server" Text='<%# Eval("QuantityPerUnit") %>' /></td>
                    </tr>
                    <tr>
                      <td align="right"><b>Unit Price:</b></td>
                      <td><asp:Label id="UnitPriceLabel" runat="server" Text='<%# Eval("UnitPrice") %>' /></td>
                    </tr>
                  </table>                 
                </ItemTemplate>

                <PagerTemplate>
                  <table>
                    <tr>
                      <td><asp:LinkButton ID="FirstButton" CommandName="Page" CommandArgument="First" Text="<<" RunAt="server"/></td>
                      <td><asp:LinkButton ID="PrevButton"  CommandName="Page" CommandArgument="Prev"  Text="<"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="NextButton"  CommandName="Page" CommandArgument="Next"  Text=">"  RunAt="server"/></td>
                      <td><asp:LinkButton ID="LastButton"  CommandName="Page" CommandArgument="Last"  Text=">>" RunAt="server"/></td>
                    </tr>
                  </table>
                </PagerTemplate>

              </asp:FormView>

            </td>
          </tr>
        </table>

        <asp:LinqDataSource 
            ContextTypeName="NorthwindDataContext" 
            TableName="Products"
            ID="LinqDataSource1"  
            runat="server">
        </asp:LinqDataSource>

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


Para mais informações sobre controles da fonte de dados, consulte Controles Servidores da Web com fonte de dados.

A maneira que um controle de fonte de dados recupera dados é determinada pelo próprio controle. O controle ObjectDataSource lê dados chamando os métodos especificado na propriedade SelectMethod.O exemplo a seguir mostra um controle ObjectDataSource que retorna dados usando o método GetAllEmployees da classe EmployeeLogic.

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<!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>ObjectDataSource - C# Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <asp:gridview
          id="GridView1"
          runat="server"
          datasourceid="ObjectDataSource1" />

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetAllEmployees"
          typename="Samples.AspNet.CS.EmployeeLogic" />

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


<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.JSL" Assembly="Samples.AspNet.JSL" %>
<%@ Page language="VJ#" %>
<!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>ObjectDataSource - VJ# Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <asp:gridview
          id="GridView1"
          runat="server"
          datasourceid="ObjectDataSource1" />

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetAllEmployees"
          typename="Samples.AspNet.JSL.EmployeeLogic" />

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


Para obter mais informações, consulte Visão geral sobre o controle de servidor Web ObjectDataSource.

Os controles SqlDataSource e AccessDataSource selecionam dados executando uma consulta SQL que é especificada na propriedade SelectCommand.O exemplo a seguir mostra um controle SqlDataSource que retorna dados da tabela Funcionários do banco de dados Northwind de exemplo:

<%@ Page language="C#" %>

<!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 runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:SqlDataSource
          id="SqlDataSource1"
          runat="server"
          DataSourceMode="DataReader"
          ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>

      <asp:ListBox
          id="ListBox1"
          runat="server"
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>

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


<!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 runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:SqlDataSource
          id="SqlDataSource1"
          runat="server"
          DataSourceMode="DataReader"
          ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>

      <asp:ListBox
          id="ListBox1"
          runat="server"
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>

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


Para obter mais informações, consulte Selecionando Dados Usando o Controle SqlDataSource.

Quando você usa o controle LinqDataSource, se você não definir sua propriedade Select, o controle retorna dados para todas as propriedades na classe de dados.Você pode especificar um subconjunto de propriedades ou calcular novos valores, definindo a propriedade Select.O exemplo a seguir mostra um controle LinqDataSource que retorna três propriedades de uma fonte de dados que contém propriedades adicionais.

<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    Select="new(Name, Category, Price)"
    ID="LinqDataSource1" 
    runat="server">
</asp:LinqDataSource>
<asp:GridView 
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    runat="server">
</asp:GridView>


O XmlDataSource não permite que você selecione elementos específicos da fonte de dados XML.No entanto, você pode especificar um filtro usando a propriedade XPath.Para obter mais informações, consulte Filtrando dados usando o controle XmlDataSource.

Os controles LinqDataSource, ObjectDataSource, e SqlDataSource podem ser configurados para que os usuários possam modificar dados.Para obter mais informações, consulte Modificando Dados Usando Controles de Fonte de Dados.

Contribuições da comunidade

ADICIONAR
Mostrar: