Share via


Vinculando um Controle Tabular ao Controle XmlDataSource

O controle XmlDataSource é usado principalmente para expor dados hierárquicos XML para controles vinculados, como os controles TreeView ou Menu.Você também pode vincular controles ligados a dados tabulares como um controle GridView ou DataList para o controle XmlDataSource.

Vinculação a Campos em Dados XML

Ao vincular um controle ligado a dado tabular ao controle XmlDataSource, o controle ligado a dados processa somente o primeiro nível da hierarquia XML.O controle XmlDataSource expõe os atributos de nós de primeiro nível como o equivalente de colunas em um tabela de dados.Como resultado, você pode especificar um nome de atributo do nó de primeiro nível como o nome de um DataField para um objeto BoundField.Você também pode especificar um nome de atributo em uma expressão de vinculação de dados Eval em um modelo de controle.

Vinculação com a Hierarquia XML usando o Método XPath

Controles tabulares permitem que você vincule controles em um modelo a dados usando os métodos Eval ou Bind.Se você estiver vinculando o controle tabular a um controle XmlDataSource, você pode , adicionalmente, usar o método XPath, que permite que você especifique uma consulta XPath para vinculação de dados de somente leitura

O método XPath de vinculação de dados navega na hierarquia XML e retorna um valor de um nó ou de um atributo em qualquer lugar na hierarquia.Ao usar o método XPath de vinculação de dados, você passa uma consulta XPath e um segundo parâmetro opcional para especificar um formato para a sequência de caracteres retornada.O parâmetro de formato de sequência de caracteres usa a sintaxe definida para o método Format da classe String.

O exemplo de código a seguir mostra um controle DataList acoplado a um controle XmlDataSource.A expressão de vinculação de dados no modelo usa o método XPath para retornar valores a partir de dados XML.Para obter detalhes sobre o arquivo People.xml usado no exemplo, consulte Visão Geral sobre o Controle de Servidor Web XmlDataSource.

<%@ Page Language="VB" %>
<!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>ASP.NET Example</title>
</head>
<body>
    <form id="form1" >
      <asp:XmlDataSource
        id="PeopleDataSource"
        
        XPath="/People/Person"
        DataFile="~/App_Data/people.xml" />

      <asp:DataList
        id="PeopleDataList"
        DataSourceID="PeopleDataSource"
        Runat="server">

        <ItemTemplate>
          <table cellpadding="4" cellspacing="4">
            <tr>
              <td style="vertical-align:top; width:120">
                <asp:Label id="LastNameLabel" Text='<%# XPath("Name/LastName")%>'  />, 
                <asp:Label id="FirstNameLabel" Text='<%# XPath("Name/FirstName")%>'  />
              </td>
              <td valign="top">
                 <asp:Label id="StreetLabel" Text='<%# XPath("Address/Street") %>'  /><br />
                 <asp:Label id="CityLabel" Text='<%# XPath("Address/City") %>'  />, 
                 <asp:Label id="RegionLabel" Text='<%# XPath("Address/Region") %>'  />
                 <asp:Label id="ZipCodeLabel" Text='<%# XPath("Address/ZipCode") %>'  />
              </td>
            </tr>
          </table>
        </ItemTemplate>
      </asp:DataList>
    </form>
  </body>
</html>
<%@ 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>ASP.NET Example</title>
</head>
<body>
    <form id="form1" >
      <asp:XmlDataSource
        id="PeopleDataSource"
        
        XPath="/People/Person"
        DataFile="~/App_Data/people.xml" />

      <asp:DataList
        id="PeopleDataList"
        DataSourceID="PeopleDataSource"
        Runat="server">

        <ItemTemplate>
          <table cellpadding="4" cellspacing="4">
            <tr>
              <td style="vertical-align:top; width:120">
                <asp:Label id="LastNameLabel" Text='<%# XPath("Name/LastName")%>'  />, 
                <asp:Label id="FirstNameLabel" Text='<%# XPath("Name/FirstName")%>'  />
              </td>
              <td valign="top">
                 <asp:Label id="StreetLabel" Text='<%# XPath("Address/Street") %>'  /><br />
                 <asp:Label id="CityLabel" Text='<%# XPath("Address/City") %>'  />, 
                 <asp:Label id="RegionLabel" Text='<%# XPath("Address/Region") %>'  />
                 <asp:Label id="ZipCodeLabel" Text='<%# XPath("Address/ZipCode") %>'  />
              </td>
            </tr>
          </table>
        </ItemTemplate>
      </asp:DataList>
    </form>
  </body>
</html>

Usando XPathSelect para Retornar Nós Selecionados

Você pode acoplar um controle de dados tabular aninhado em um modelo de item a uma lista de nós selecionados a partir dos dados fornecidos por um controle XmlDataSource.Para fazer isso, você pode usar o método XPathSelect.O método XPathSelect retorna uma lista de nós que correspondem a uma expressão XPath, com a qual o controle de dados tabulares pode trabalhar, como se eles fossem uma coleção de registros de dados.O exemplo a seguir mostra como usar o método XPathSelect com um controle DataList aninhado para exibir os nós Order_Details dentro da hierarquia XML.

<asp:XmlDataSource
  id="OrdersDataSource"
  
  DataFile="~\App_Data\orders.xml" />

<asp:DataList
  id="OrdersDataList"
  DataSourceID="OrdersDataSource"
  Runat="server">

  <ItemTemplate>
    Order ID: <asp:Label id="OrderIDLabel"  
                Text='<%# XPath("OrderID") %> /><BR>

    <asp:DataList id="ProductsDataList" 
      DataSource='<%# XPathSelect("Order_Details") %>' >
      <ItemTemplate>
        <br>Product ID:<%# XPath("ProductID")%>
        <br>Quantity: <%# XPath("Quantity") %>
      </ItemTemplate>
    </asp:DataList>

  </ItemTemplate>
</asp:DataList>

Consulte também

Outros recursos

Controles Servidores da Web com fonte de dados