Как добиться обратного документа, упорядоченного XmlDataSource в ListView?
Я использую asp:XmlDataSource
перечислить документ XML. Это выглядит так:
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/App_Data/Xml/History.xml" />
И я использую это в asp:Listview
как это:
<asp:ListView runat="server" DataSourceID="XmlDataSource1" >
Мне было интересно, есть ли способ изменить порядок, потому что я хотел бы, чтобы последняя строка в xml была первой строкой в моем списке. Как мне этого добиться?
2 ответа
Если ваш XML выглядит так (например):
<myxml>
<row id="1">
<row id="2">
</myxml>
тогда вы можете сделать встроенное преобразование примерно так:
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/App_Data/Xml/History.xml">
<Transform>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*">
<myxml>
<xsl:for-each select="//row">
<xsl:sort select="@id" order="descending" />
<xsl:copy-of select="row"/>
</xsl:for-each>
</myxml>
</xsl:template>
</xsl:stylesheet>
</Transform>
</asp:XmlDataSource>
Надеюсь, это поможет:)
Вы можете просто заполнить список, перевернуть его, а затем связать с этим списком.
РЕДАКТИРОВАТЬ: Трудно привести пример, потому что он будет полностью зависеть от вашего XML-файла, но основная идея приведена ниже, где вы можете изменить оператор выбора по мере необходимости и, возможно, добавить некоторые из операторов по мере необходимости.
XDocument XDoc = XDocument.Load(XMLFileName);
ListView.DataSource = (from XMLNode in XDoc.Nodes()
select XMLNode.ToString()).ToList().Reverse();
ListView.DataBind();