Binden eines tabellarischen Steuerelements an das XmlDataSource-Steuerelement
Aktualisiert: November 2007
Das XmlDataSource-Steuerelement wird hauptsächlich verwendet, um hierarchische XML-Daten für datengebundene Steuerelemente, z. B.das TreeView-Steuerelement oder das Menu-Steuerelement, verfügbar zu machen. Sie können auch datengebundene Tabellensteuerelemente, z. B. das GridView-Steuerelement oder das DataList-Steuerelement, an das XmlDataSource-Steuerelement binden.
Binden an Felder in XML-Daten
Wenn Sie ein datengebundenes tabellarisches Steuerelement an das XmlDataSource-Steuerelement binden, stellt das Steuerelement nur die erste Ebene der XML-Hierarchie dar. Das XmlDataSource-Steuerelement stellt die Attribute aller Knoten der ersten Ebene ähnlich wie Spalten in einer Datentabelle zur Verfügung. Dies bedeutet, dass Sie einen Attributnamen eines Knotens der ersten Stufe als den Namen eines DataField für ein BoundField-Objekt angeben können. Sie können einen Attributnamen auch in einem Eval-Datenbindungsausdruck in einer Steuerelementvorlage angeben.
Bindung an die XML-Hierarchie mithilfe der XPath-Methode
Mit Tabellensteuerelementen können Sie Steuerelemente in einer Vorlage an Daten binden, indem Sie die Eval-Methode oder die Bind-Methode verwenden. Wenn Sie das Tabellensteuerelement an ein XmlDataSource-Steuerelement binden, können Sie zusätzlich die XPath-Methode verwenden, mithilfe derer Sie eine XPath-Abfrage für schreibgeschützte Datenbindung angeben können.
Die XPath-Datenbindungsmethode navigiert durch die XML-Hierarchie und gibt den Wert eines Knotens oder eines Attributs zurück, wobei sich der Knoten oder das Attribut an einer beliebigen Position innerhalb der Hierarchie befinden kann. Beim Verwenden der XPath-Datenbindungsmethode übergeben Sie eine XPath-Abfrage sowie einen optionalen zweiten Parameter, um das Format für die zurückgegebene Zeichenfolge anzugeben. Der Formatierungsparameter für die Zeichenfolge verwendet die für die Format-Methode der String-Klasse definierte Syntax.
Das folgende Codebeispiel zeigt ein an ein XmlDataSource-Steuerelement gebundenes DataList-Steuerelement. Der Datenbindungsausdruck in der Vorlage verwendet die XPath-Methode zur Rückgabe von Werten aus den XML-Daten. Ausführliche Informationen zu der im Beispiel verwendeten Datei People.xml finden Sie unter Übersicht über das XmlDataSource-Webserversteuerelement.
<%@ 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>
Verwenden von XPathSelect zur Rückgabe ausgewählter Knoten
Sie können ein geschachteltes Tabellensteuerelement in einer Elementvorlage an eine Liste von Knoten binden, die aus den von einem XmlDataSource-Steuerelement bereitgestellten Daten ausgewählt wurden. Verwenden Sie dazu die XPathSelect-Methode. Die XPathSelect-Methode gibt eine Liste der einem XPath-Ausdruck entsprechenden Knoten zurück, mit der das Tabellendaten-Steuerelement arbeiten kann wie mit einer Auflistung von Datensätzen. Das folgende Beispiel zeigt die Verwendung der XPathSelect-Methode mit einem geschachtelten DataList-Steuerelement zur Anzeige der Order_Details-Knoten innerhalb einer XML-Hierarchie.
<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>