Если вы посмотрите на свой XML (только первые несколько строк):
<VacancyList generated="2009-08-04T18:43:17"
xmlns="urn:EasyCruit"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.easycruit.com/dtd/vacancy-list.xsd">
<Vacancy id="82034" date_start="2007-04-17" date_end="2009-12-22"
reference_number="CDP-GR3">
<Versions>
<Version language="fr">
<Title>Chef de produit (H/F)</Title>
<TitleHeading/>
Вы связываете свою сетку данных со списком <Vacancy>
элементов - пока отлично.
Но тогда в вашей сетке вы ссылаетесь: <%# XPath( "Version/Title" ) %>
Это не сработает, поскольку <Vacancy>
не имеет коллекции '/ inside it - these elements are within a
`.....
Так что вам нужно ссылаться на ваш ItemTemplate:
<%# XPath( "Versions/Version[@language='fr']/Title" ) %>
Это должно сработать.
UPDATE:
Похоже, что дополнительная проблема с тем, что ASP.NET 2.0 XmlDataSource не может обрабатывать пространства имен XML по умолчанию: - (
Вот эта строка в вашем XML:
<VacancyList ........
xmlns="urn:EasyCruit"
См. Этот пост в блоге здесь на тему: http://jasonf -blog.blogspot.com / 2006/08 / xmldatasource-xpath-workaround-for.html
Есть две вещи, которые вы можете сделать, чтобы это исправить:
- использовать XSLT-преобразование для удаления пространства имен по умолчанию, чтобы XmlDataSource мог обрабатывать данные
- загрузить данные из URL в коде и связать их с GridView в вашем коде позади
ОБНОВЛЕНИЕ 2:
Метод удаления пространств имен XML, кажется, работает очень хорошо - Билл Эвджен предлагает этот метод здесь .
Если вы сохраните его XSLT-файл в сообщении в файл с именем "StripNamespaces.xslt" в проекте веб-сайта, вы должны получить свои данные, если вы измените asp: XmlDataSource на:
<asp:XmlDataSource ID="XMLsource" runat="server"
DataFile="http://demo.easycruit.com/export/xml/vacancy/list.xml"
TransformFile="~/StripNamespaces.xslt"
XPath="VacancyList/Vacancy" />
Обратите внимание на новый параметр «TransformFile» - он должен ссылаться на этот XSLT-файл. После этого я получаю данные, отображаемые в GridView.
Марк