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>