Question

J'utilise un asp:XmlDataSource Pour répertorier un document XML. Cela ressemble à ceci:

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

Et je l'utilise dans un asp:Listview comme ça:

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

Je me demandais s'il y avait un moyen d'inverser la commande, car Je voudrais le dernière ligne du xml pour être le première Row dans ma liste. Comment puis-je atteindre cet objectif?

Était-ce utile?

La solution

Si votre XML ressemblait à ceci (par exemple):

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

Ensuite, vous pouvez faire une transformation en ligne avec quelque chose comme ceci:

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

J'espère que cela pourra aider :)

Autres conseils

Vous pouvez simplement remplir une liste, l'inverser, puis vous lier à cette liste.

Edit: il est difficile de donner un exemple, car cela dépendra totalement de votre fichier XML, mais l'idée de base est ci-dessous, où vous modifieriez l'instruction SELECT comme requis et peut-être en ajouter des instructions selon les besoins.

XDocument XDoc = XDocument.Load(XMLFileName);
ListView.DataSource = (from XMLNode in XDoc.Nodes()
                       select XMLNode.ToString()).ToList().Reverse();
ListView.DataBind();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top