Как добиться обратного документа, упорядоченного XmlDataSource в ListView? - PullRequest
0 голосов
/ 04 мая 2011

Я использую asp:XmlDataSource для отображения XML-документа. Это выглядит так:

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

И я использую его в asp:Listview так:

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

Мне было интересно, есть ли способ изменить порядок, потому что я бы хотел, чтобы строка last в xml была первой строкой в ​​моем списке . Как мне этого добиться?

Ответы [ 2 ]

2 голосов
/ 04 мая 2011

Вы можете просто заполнить список, повернуть его вспять, а затем связать с этим списком.

РЕДАКТИРОВАТЬ: Трудно привести пример, потому что он будет полностью зависеть от вашего XML-файла, но основная идея заключается в том, чтониже, где вы могли бы изменить оператор выбора по мере необходимости и, возможно, добавить некоторые из операторов по мере необходимости.

XDocument XDoc = XDocument.Load(XMLFileName);
ListView.DataSource = (from XMLNode in XDoc.Nodes()
                       select XMLNode.ToString()).ToList().Reverse();
ListView.DataBind();
2 голосов
/ 04 мая 2011

если ваш 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>

Надеюсь, что поможет:)

...