如何在ListView中实现逆向文档排序XmlDataSource?

时间:2011-05-04 11:56:15

标签: c# asp.net listview xmldatasource

我正在使用asp:XmlDataSource列出xml文档。它看起来像这样:

<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/App_Data/Xml/History.xml" />

我正在asp:Listview这样使用它:

<asp:ListView runat="server" DataSourceID="XmlDataSource1" >

我想知道是否有办法扭转顺序,因为我希望xml的 last 行成为我的第一个行列表即可。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分: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>

希望有所帮助:)

答案 1 :(得分:2)

您可以填充列表,反转它,然后绑定到该列表。

编辑:很难给出一个例子,因为它完全取决于您的XML文件,但基本思想如下,您可以根据需要更改select语句,也可以根据需要在语句中添加一些。 / p>
XDocument XDoc = XDocument.Load(XMLFileName);
ListView.DataSource = (from XMLNode in XDoc.Nodes()
                       select XMLNode.ToString()).ToList().Reverse();
ListView.DataBind();