Fork me on GitHub

AspNetPager 示例 - XML数据分页

该示例演示如何使用AspNetPager分页控件对保存在XML文件中的数据进行分页。
订单编号订单日期公司名称客户编号雇员姓名
10947 1998/3/13 B's Beverages BSBEV Janet Leverling
10946 1998/3/12 Vaffeljernet VAFFE Nancy Davolio
10945 1998/3/12 Morgenstern Gesundkost MORGK Margaret Peacock
10944 1998/3/12 Bottom-Dollar Markets BOTTM Michael Suyama
10943 1998/3/11 B's Beverages BSBEV Margaret Peacock
10942 1998/3/11 Reggiani Caseifici REGGC Anne Dodsworth
10941 1998/3/11 Save-a-lot Markets SAVEA Robert King
10940 1998/3/11 Bon app' BONAP Laura Callahan
10939 1998/3/10 Magazzini Alimentari Riuniti MAGAA Andrew Fuller
10938 1998/3/10 QUICK-Stop QUICK Janet Leverling

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();
        }
    }
}