Partager via


Liaison d'un contrôle sous forme de tableau au contrôle XmlDataSource

Mise à jour : novembre 2007

Le contrôle XmlDataSource sert principalement à exposer des données XML hiérarchiques aux contrôles liés aux données tels que les contrôles TreeView ou Menu. Vous pouvez également lier des contrôles liés à des données tabulaires, notamment un contrôle GridView ou DataList au contrôle XmlDataSource.

Liaison à des champs dans des données XML

Lorsque vous liez un contrôle lié à des données tabulaires au contrôle XmlDataSource, le contrôle génère uniquement le rendu du premier niveau de la hiérarchie XML. Le contrôle XmlDataSource expose les attributs des nœuds de premier niveau sous la forme de colonnes dans une table de données. En conséquence, vous pouvez spécifier un nom d'attribut à partir du nœud de premier niveau en tant que nom d'un DataField pour un objet BoundField. Vous pouvez également spécifier un nom d'attribut dans une expression de liaison de données Eval dans un modèle de contrôle.

Liaison à la hiérarchie XML à l'aide de la méthode XPath

Les contrôles tabulaires vous permettent de lier des contrôles d'un modèle à des données à l'aide des méthodes Eval ou Bind. Si vous liez le contrôle tabulaire à un contrôle XmlDataSource, vous pouvez utiliser en plus la méthode XPath, laquelle vous permet de spécifier une requête XPath pour une liaison de données en lecture seule.

La méthode de liaison de données XPath parcourt la hiérarchie XML et retourne une valeur d'un nœud ou d'un attribut figurant à un endroit quelconque de la hiérarchie. Lorsque vous utilisez la méthode de liaison de données XPath, vous passez une requête XPath et un deuxième paramètre facultatif pour spécifier le format de la chaîne retournée. Le paramètre du format de chaîne utilise la syntaxe définie pour la méthode Format de la classe String.

L'exemple de code suivant montre un contrôle DataList lié à un contrôle XmlDataSource. L'expression de liaison de données du modèle utilise la méthode XPath pour retourner des valeurs à partir des données XML. Pour plus d'informations sur le fichier People.xml utilisé pour dans l'exemple, consultez Vue d'ensemble du contrôle serveur 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>

Utilisation de XPathSelect pour retourner des nœuds sélectionnés

Vous pouvez lier un contrôle de données tabulaires imbriqué dans un modèle d'élément à une liste de nœuds sélectionnés parmi les données fournies par un contrôle XmlDataSource. Pour ce faire, vous pouvez utiliser la méthode XPathSelect. La méthode XPathSelect retourne une liste de nœuds correspondant à une expression XPath, que le contrôle de données tabulaires peut utiliser comme s'il s'agissait d'une collection d'enregistrements de données. L'exemple suivant montre comment utiliser la méthode XPathSelect avec un contrôle DataList imbriqué pour afficher les nœuds Order_Details à partir de la hiérarchie 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>

Voir aussi

Autres ressources

Contrôles serveur Web de sources de données