共用方式為


繫結表格式控制項至 XmlDataSource 控制項

更新:2007 年 11 月

XmlDataSource 控制項主要是用於將階層式 XML 資料公開至繫結控制項,例如 TreeViewMenu 控制項。您也可以將表格式資料繫結控制項 (例如 GridViewDataList 控制項) 繫結至 XmlDataSource 控制項。

繫結至 XML 資料中的欄位

當您將表格式資料繫結控制項繫結至 XmlDataSource 控制項時,控制項只會呈現第一層的 XML 階層架構。XmlDataSource 控制項會將第一層節點的屬性,公開當做資料表中的相同對應資料行。因此,您可以從第一層節點指定屬性名稱當做 BoundField 物件 DataField 的名稱。您也可以在控制項範本的 Eval 資料繫結運算式中指定屬性名稱。

使用 XPath 方法繫結至 XML 階層架構

表格式控制項能夠讓您使用 Eval 或 Bind 方法,將範本中的控制項繫結至資料。如果您將表格式控制項繫結至 XmlDataSource 控制項,可以另外使用 XPath 方法,這麼做能夠讓您指定唯讀資料繫結的 XPath 查詢。

XPath 資料繫結方法會巡覽 XML 階層架構,然後傳回階層架構中任一節點或屬性的值。當使用 XPath 資料繫結方法時,會傳遞 XPath 查詢以及額外的第二個參數,以指定回傳字串的格式。字串格式參數會使用為 String 類別之 Format 方法定義的語法。

下列程式碼範例示範了繫結至 XmlDataSource 控制項的 DataList 控制項。範本中的資料繫結運算式會使用 XPath 方法傳回 XML 資料的值。如需範例中所使用之 People.xml 檔案的詳細資訊,請參閱 XmlDataSource Web 伺服器控制項概觀

<%@ 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>

使用 XPathSelect 傳回選取的節點

您可以將項目範本中的巢狀表格式資料控制項,繫結至由 XmlDataSource 控制項提供之資料所選取的節點清單。若要這麼做,可以使用 XPathSelect 方法。XPathSelect 方法會傳回符合 XPath 運算式的節點清單,其中表格式資料控制項能夠當做資料錄集合使用。下列程式碼範例示範了如何將 XPathSelect 方法與巢狀 DataList 控制項搭配使用,顯示 XML 階層架構內的 Order_Details 節點。

<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>

請參閱

其他資源

資料來源 Web 伺服器控制項