Fork me on GitHub

AspNetPager 示例 - XML数据分页

该示例演示如何使用AspNetPager分页控件对保存在XML文件中的数据进行分页。
订单编号订单日期公司名称客户编号雇员姓名
10887 1998/2/13 Galería del gastrónomo GALED Laura Callahan
10886 1998/2/13 Hanari Carnes HANAR Nancy Davolio
10885 1998/2/12 Suprêmes délices SUPRD Michael Suyama
10884 1998/2/12 Let's Stop N Shop LETSS Margaret Peacock
10883 1998/2/12 Lonesome Pine Restaurant LONEP Laura Callahan
10882 1998/2/11 Save-a-lot Markets SAVEA Margaret Peacock
10881 1998/2/11 Cactus Comidas para llevar CACTU Margaret Peacock
10880 1998/2/10 Folk och fä HB FOLKO Robert King
10879 1998/2/10 Wilman Kala WILMK Janet Leverling
10878 1998/2/10 QUICK-Stop QUICK Margaret Peacock

XMLData.aspx:

<%@ Page Language="C#" AutoEventWireup="true" MetaDescription="该示例演示如何使用AspNetPager分页控件对保存在XML文件中的数据进行分页。"  Inherits="XMLData_Default" MasterPageFile="AspNetPager.master" Title="XML数据分页" Codebehind="XMLData.aspx.cs" %>
<asp:Content runat="server" ID="content1" ContentPlaceHolderID="main">
   <asp:Repeater ID="Repeater1" runat="server">
        <HeaderTemplate>
        <table width="100%" class="table table-bordered table-striped">
        <tr><th style="width:15%">订单编号</th><th style="width:15%">订单日期</th><th style="width:30%">公司名称</th><th style="width:20%">客户编号</th><th style="width:20%">雇员姓名</th></tr>
        </HeaderTemplate>
        <ItemTemplate>
        <tr>
        <td><%#DataBinder.Eval(Container.DataItem,"orderid")%></td>
        <td><%#DataBinder.Eval(Container.DataItem,"orderdate","{0:d}")%></td>
        <td><%#DataBinder.Eval(Container.DataItem, "companyname")%></td>
        <td><%#DataBinder.Eval(Container.DataItem,"customerid")%></td>
        <td><%#DataBinder.Eval(Container.DataItem,"employeename")%></td>
        </tr>
        </ItemTemplate>
        <FooterTemplate>
        </table>
        </FooterTemplate>
        </asp:Repeater>
    <webdiyer:aspnetpager id="AspNetPager1" runat="server" horizontalalign="Center" onpagechanged="AspNetPager1_PageChanged" CssClass="pagination" LayoutType="Ul" PagingButtonLayoutType="UnorderedList" PagingButtonSpacing="0" CurrentPageButtonClass="active"
       UrlPaging="true" ShowPageIndexBox="Never"></webdiyer:aspnetpager>
    <asp:Label ID="Label1" runat="server" Font-Bold="True" ForeColor="Red"></asp:Label>

</asp:Content>

XMLData.aspx.cs:

using System;
using System.Data;
using System.Web.Caching;
using System.Web.UI;

public partial class XMLData_Default : Page
{
            const string cacheKey = "ordersTable";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataTable tbl = loadFromXMLOrCache();
            AspNetPager1.RecordCount = tbl.Rows.Count;
        }
    }

    DataTable loadFromXMLOrCache()
    {
        DataTable tbl = (DataTable)Cache[cacheKey];
        if (null == tbl)
        {
            string xmlFile = Server.MapPath("app_data/orders.xml");
            tbl = new DataTable();
                tbl.ReadXml(xmlFile);
            CacheDependency dep = new CacheDependency(xmlFile);
            Cache.Insert(cacheKey, tbl, dep);
        }
        return tbl;
    }

    protected void AspNetPager1_PageChanged(object src, EventArgs e)
    {
        DataTable tbl= loadFromXMLOrCache();
        if (tbl != null && tbl.Rows.Count > 0)
        {
            DataView dv = tbl.DefaultView;
            dv.Sort = "orderid desc";
            DataTable srcTbl = tbl.Clone();
            for (int i = AspNetPager1.StartRecordIndex; i <= AspNetPager1.EndRecordIndex; i++)
            {
                srcTbl.ImportRow(dv[i-1].Row);
            }
            Repeater1.DataSource = srcTbl;
            Repeater1.DataBind();
        }
    }
}