Come ottenere il documento invertito ordinato XmldataSource in ListView?
-
28-10-2019 - |
Domanda
Sto usando un asp:XmlDataSource
Per elencare un documento XML. Sembra questo:
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/App_Data/Xml/History.xml" />
E lo sto usando in un asp:Listview
come questo:
<asp:ListView runat="server" DataSourceID="XmlDataSource1" >
Mi chiedevo se ci fosse un modo per invertire l'ordine, perché Vorrei Ultimo riga dell'XML per essere il primo riga nella mia lista. Come posso raggiungere questo obiettivo?
Soluzione
Se il tuo XML sembrava questo (per esempio):
<myxml>
<row id="1">
<row id="2">
</myxml>
Quindi puoi fare una trasformazione in linea con qualcosa del genere:
<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>
Spero possa aiutare :)
Altri suggerimenti
Potresti semplicemente popolare un elenco, invertirlo, quindi legarsi a quell'elenco.
EDIT: è difficile dare un esempio, perché dipenderà totalmente dal tuo file XML, ma l'idea di base è sotto, dove cambieresti l'istruzione selezionata come richiesto e forse aggiungi alcune dalle dichiarazioni come richiesto.
XDocument XDoc = XDocument.Load(XMLFileName);
ListView.DataSource = (from XMLNode in XDoc.Nodes()
select XMLNode.ToString()).ToList().Reverse();
ListView.DataBind();