Condividi tramite


Associazione di un controllo tabulare al controllo XmlDataSource

Aggiornamento: novembre 2007

Il controllo XmlDataSource viene utilizzato principalmente per esporre dati XML gerarchici a controlli associati come TreeView o Menu. È inoltre possibile associare controlli con associazione a dati tabulari, come GridView o DataList, al controlloXmlDataSource.

Associazione a campi in dati XML

Quando al controllo XmlDataSource viene associato un controllo con associazione a dati tabulari, il controllo con associazione a dati restituisce solo il primo livello della gerarchia XML. Il controllo XmlDataSource espone gli attributi dei nodi di primo livello come se fossero l'equivalente delle colonne in una tabella dati. Di conseguenza, è possibile specificare il nome di un attributo dal nodo di primo livello come il nome di un controllo DataField per un oggetto BoundField. È possibile inoltre specificare il nome di un attributo in un'espressione di associazione dati Eval in un modello di controllo.

Associazione alla gerarchia XML tramite il metodo XPath

I controlli tabulari consentono di associare i controlli di un modello ai dati utilizzando il metodo Eval o Bind. Se si associa il controllo tabulare a un controllo XmlDataSource, è possibile utilizzare in aggiunta il metodo XPath, che consente di specificare una query XPath per l'associazione dati di sola lettura.

Il metodo di associazione dati XPath esplora la gerarchia XML e restituisce un valore da un nodo o da un attributo in un punto qualsiasi della gerarchia. Quando si utilizza il metodo di associazione dati XPath, viene passata una query XPath e un secondo parametro facoltativo per specificare un formato per la stringa restituita. Il parametro del formato di stringa utilizza la sintassi definita per il metodo Format della classe String.

Nell'esempio di codice riportato di seguito viene illustrato un controllo DataList associato a un controllo XmlDataSource. L'espressione di associazione dati del modello utilizza il metodo XPath per restituire valori dai dati XML. Per informazioni dettagliate sul file People.xml utilizzato nell'esempio, vedere Cenni preliminari sul controllo server 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>

Utilizzo di XPathSelect per restituire nodi selezionati

È possibile associare un controllo dati tabulare nidificato di un modello di elementi a un elenco di nodi selezionati dai dati forniti da un controllo XmlDataSource. Per eseguire questa operazione, è possibile utilizzare il metodo XPathSelect, che restituisce un elenco di nodi corrispondenti a un'espressione XPath utilizzabile dal controllo dati tabulare come se fossero un insieme di record di dati. Nell'esempio riportato di seguito viene illustrato come utilizzare il metodo XPathSelect con un controllo nidificato DataList per visualizzare i nodi Order_Details dall'interno della gerarchia 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>

Vedere anche

Altre risorse

Controlli server Web dell'origine dati