1

私は、xmlから取得したデータを単純に逆にする/日付で並べ替える方法、またはページにレンダリングするリピーターを使用してそれを行うことができるかどうかを調べようとしています。

だからここに私が持っているものがあります:

ページが xml を読み取るだけで...

if (!Page.IsPostBack)
        {
            DataSet messages = new DataSet();
            try
            {
                messages.ReadXml(MapPath("~/_xml/messages.xml"));
                myMessages.DataSource = messages;
                myMessages.DataBind();
            }

...そして、日付を DataSet に入れます。

ページでは、リピーターがデータをレンダリングします...

<asp:Repeater ID="myMessages" runat="server">
                <HeaderTemplate>
                    <table border="0">
                </HeaderTemplate>
                <ItemTemplate>
                    <div class="message">
                        <div class="messageHeader">
                            <span><p><b><%# DataBinder.Eval(Container.DataItem, "name") %></b> wrote <%# DataBinder.Eval(Container.DataItem, "date") %>:</p></span>
                        </div>
                        <div class="splitLine"></div>
                        <br />
                        <div class="messageText">
                            <span><p><%# DataBinder.Eval(Container.DataItem, "message") %></p></span>
                        </div>
                    </div>
                </ItemTemplate>
                <FooterTemplate>
                    </Table>
                </FooterTemplate>
            </asp:Repeater>

新しいエントリをファイルの最後に配置する代わりに、最初に配置するなど、データを別の順序で書き込むことも可能かもしれません。しかし、それは根本的な解決にはならないと思います。

これは、データを xml に書き込む方法です。

var file = Server.MapPath("~/_xml/messages.xml");

var message = new XElement("contact",
new XElement("Name", s_name.Trim()),
new XElement("message", s_message.Trim()),
new XElement("date", DateTime.Now.ToString()));
var doc = new XDocument();

if (ckeckFileExistance(file))
{
     doc = XDocument.Load(file);
     doc.Element("messages").Add(message);
}
else
{
     doc = new XDocument(new XElement("messages", message));
}
doc.Save(file);

これは迅速で小規模なプロジェクトです。できるだけシンプルにする必要があります。そしてまた。私がやりたいことは、最新のエントリがページの上部に表示されるようにすることです現在は下部に表示されます。前もって感謝します!

4

1 に答える 1

1
XDocument messages = XDocument.Load(MapPath("~/_xml/messages.xml"));
myMessages.DataSource = 
    messages.Elements("messages")
    .Elements("contact")
    .OrderByDescending(m => DateTime.Parse(m.Element("date").Value))
myMessages.DataBind();

リピーターバインディングをに変更します

<%# DataBinder.Eval(((XElement)Container.DataItem).Element("date"), "Value")%>

于 2012-07-25T08:09:41.903 に答える