2011-05-04 20 views
0

我正在使用asp:XmlDataSource列出一個xml文檔。它看起來像這樣:如何在ListView中實現顛倒的文檔命令XmlDataSource?

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

而且我用它在asp:Listview這樣的:

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

,我想知道是否有是顛倒順序的方式,因爲我想最後排的xml是第一排排在我的清單。我怎樣才能做到這一點?

回答

2

如果您的XML看上去像這樣(例如):

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

希望幫助:)

+0

看起來很酷,但我得到*'xsl'是一個未聲明的前綴。第1行,第2位。*例外。有任何想法嗎? – 2011-05-04 13:10:38

+0

你能更新你的答案嗎? ' \t的 \t \t的 \t \t \t \t \t \t \t <的xsl:for-每個選擇= 「//行」> \t \t \t \t \t的 \t \t \t \t \t的 \t \t \t \t的 \t \t \t \t ' 當改變它,我會接受你的回答。 – 2011-05-04 13:21:40

+0

對不起,意思是說需要完整的xslt。相應地更新:) – Nathan 2011-05-04 14:37:01

2

<myxml> 
    <row id="1"> 
    <row id="2"> 
</myxml> 

那麼你可以做一個內嵌像這樣的東西變換您可以填充一個列表,將其反轉,然後綁定到該列表。

編輯:這很難給出一個例子,因爲它會完全取決於你的XML文件,但基本思路是下面,在那裏你會改變select語句根據需要和可能根據需要從報表增加一些。

XDocument XDoc = XDocument.Load(XMLFileName); 
ListView.DataSource = (from XMLNode in XDoc.Nodes() 
         select XMLNode.ToString()).ToList().Reverse(); 
ListView.DataBind(); 
+0

你能給我一些示例代碼嗎? – 2011-05-04 13:22:31

+0

感謝這個例子。看起來不錯。 Nathan的實現似乎更容易,但是感謝您的代碼! – 2011-05-05 09:12:24