Pregunta

Estoy usando un asp:XmlDataSource Para enumerar un documento XML. Se parece a esto:

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

Y lo estoy usando en un asp:Listview como esto:

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

Me preguntaba si había una manera de revertir el orden, porque Me gustaría el ultimo fila del xml para ser el primero fila en mi lista. ¿Cómo puedo conseguir esto?

¿Fue útil?

Solución

Si su XML se veía así (por ejemplo):

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

Entonces puedes hacer una transformación en línea con algo como esto:

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

Espero que ayude :)

Otros consejos

Podrías llenar una lista, revertirla y luego vincular a esa lista.

Editar: es difícil dar un ejemplo, porque dependerá totalmente de su archivo XML, pero la idea básica está a continuación, donde cambiaría la instrucción SELECT según sea necesario y tal vez agregue algunas de las declaraciones según sea necesario.

XDocument XDoc = XDocument.Load(XMLFileName);
ListView.DataSource = (from XMLNode in XDoc.Nodes()
                       select XMLNode.ToString()).ToList().Reverse();
ListView.DataBind();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top