DateList以Xml为数据源的情况下,怎样写分页代码?xml文件:
<?xml version="1.0" encoding="gb2312"?><books><book>
<name>C++完美编程</name>
<price>29.9</price>
</book><book>
<name>Asp.net从入门到精通</name>
<price>78.6</price>
</book><book>
<name>Hello_World</name>
<price>1.0</price>
</book></books>我想在Asp页面下用DataList展示, 每页展示两个, 代码应给怎么写? 跪求大侠帮助!

解决方案 »

  1.   

     protected void Bindxml()
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(Server.MapPath("books.xml"));
                XmlNode root = doc.SelectSingleNode("books");
                Repeater1.DataSource = root.ChildNodes;
                Repeater1.DataBind();        } <ul>
            <asp:Repeater ID="Repeater1" runat="server">
         
            <ItemTemplate>
           <li><%# XPath("name")%></li> </ItemTemplate>
            </asp:Repeater>
           </ul>
    没有分页的。。分页的我要想想。有高手知道吗?
      

  2.   

    应该是Asp.net说错了, 小弟是初学者。呵呵
      

  3.   

     试了下。用第二个方法可以分页的呵呵。。using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Data;
    using System.Web.UI.WebControls;
    using System.Xml;namespace WebApplication2
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                    Bindxml();
                    Bindxml2();
                }        }        protected void Bindxml()
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(Server.MapPath("books.xml"));
                XmlNode root = doc.SelectSingleNode("books");
                Repeater1.DataSource = root.ChildNodes;
                Repeater1.DataBind();        }        protected void Bindxml2()
            {
                string filepath = Server.MapPath("books.xml");
                DataSet ds = new DataSet();
                ds.ReadXml(filepath);
                DataTable dt = ds.Tables[0];
                DataView dv = dt.DefaultView;
                dv.Sort = "price desc";            PagedDataSource pds = new PagedDataSource();
                pds.DataSource = dv;
                pds.AllowPaging = true;
                pds.PageSize = 2;            int pageIndex = Convert.ToInt32(Request.QueryString["page"]);
                if (pageIndex <= 1) pageIndex = 1;
                pds.CurrentPageIndex = pageIndex - 1;            this.Repeater2.DataSource = pds;
                this.Repeater2.DataBind();            this.recTotal.Text = pds.DataSourceCount.ToString();
                this.pageCount.Text = pds.PageCount.ToString();
                this.pageIndex.Text = pageIndex.ToString();            if (pageIndex == 1)
                    this.hyHome.NavigateUrl = string.Empty;
                else
                    this.hyHome.NavigateUrl = "?page=1";            if (pageIndex > 1)
                    this.hyPrev.NavigateUrl = "?page=" + (pageIndex - 1) + "";
                else
                    this.hyPrev.NavigateUrl = string.Empty;
                if (pageIndex < pds.PageCount)
                    this.hyNext.NavigateUrl = "?page=" + (pageIndex + 1) + "";
                else
                    this.hyNext.NavigateUrl = string.Empty;
                if (pageIndex >= pds.PageCount)
                    this.hyEnd.NavigateUrl = string.Empty;
                else
                    this.hyEnd.NavigateUrl = "?page=" + (pds.PageCount) + "";
            }
        }
    }<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <ul>
            <asp:Repeater ID="Repeater1" runat="server">
         
            <ItemTemplate>
           <li><%# XPath("name")%>--<%#XPath("price") %></li> </ItemTemplate>
            </asp:Repeater>
           </ul>
        </div>
        
        <asp:Repeater ID="Repeater2" runat="server">
        <ItemTemplate>
       <li><%# Eval("name")%>--<%#Eval("price") %></li>
        </ItemTemplate>
        </asp:Repeater>
        <ul>
            <li>
                    <asp:HyperLink ID="hyHome" runat="server" Text="首页"></asp:HyperLink>&nbsp;&nbsp;
                    <asp:HyperLink ID="hyPrev" runat="server" Text="上一页"></asp:HyperLink>&nbsp;&nbsp;
                    <asp:HyperLink ID="hyNext" runat="server" Text="下一页"></asp:HyperLink>&nbsp;&nbsp;
                    <asp:HyperLink ID="hyEnd" runat="server" Text="尾页"></asp:HyperLink>&nbsp;&nbsp;
                    共 <asp:Literal ID="recTotal" runat="server"></asp:Literal> 项,<asp:Literal ID="pageCount" runat="server"></asp:Literal> 页,当前第 <asp:Literal ID="pageIndex" runat="server"></asp:Literal> 页
            </li>
    </ul>
        </form>
    </body>
    </html>
      

  4.   

    搞成repeter的了。datalist 也一样
      

  5.   

    ds.ReadXML("");
    在绑定到datalist,多列设置RepeatColumns
    分页可使用aspnetpager控件
      

  6.   

    就将上面代码中的xml文件改了一下,但它老提示错误,说 dv.Sort = "title desc";中title无效,怎么回事?
      

  7.   

    就将上面代码中的xml文件改了一下,但它老提示错误,说 dv.Sort = "title desc";中title无效,怎么回事?
    按标题排序吗?这个你的XML里的字段是name。所以你应该写[name] desc.