分页排序using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class PagerDemo1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BookListBinds();
}
}
//一页显示多少行
protected int PageSize
{
get
{
if (ViewState["PageSize"] == null)
{
ViewState["PageSize"] = 10;
}
return (int)ViewState["PageSize"];
}
set
{
ViewState["PageSize"] = value;
}
}
//当前页
protected int PageIndex
{
get
{
if (ViewState["PageIndex"] == null)
{
ViewState["PageIndex"] = 0;
}
return (int)ViewState["PageIndex"];
}
set
{
ViewState["PageIndex"] = value;
}
}
//排序列
protected String Sort
{
get
{
if (ViewState["Sort"] == null)
{
ViewState["Sort"] = "ID";
}
return ViewState["Sort"].ToString();
}
set
{
ViewState["Sort"] = value;
}
}
protected void BookListBinds()
{
//创建分页类
PagedDataSource pds = new PagedDataSource();
//启用分页
pds.AllowPaging = true;
System.Data.DataView dv = DBHelper.GetDataTable("select * from Books").DefaultView;
//设置排序
dv.Sort = Sort;
//将数据绑定给分页类
pds.DataSource = dv;
//设置当前页
pds.CurrentPageIndex = PageIndex;
//设置一页显示多少行数据
pds.PageSize = PageSize;
//保存当前总页数
ViewState["PageCount"] = pds.PageCount;
//将分页后的数据绑定到Repeater
rpBookList.DataSource = pds;
rpBookList.DataBind();
//绑定当前页和总页数
liPageIndex.Text = (PageIndex + 1).ToString();
liPageCount.Text = pds.PageCount.ToString();
//设置按钮启用状态
BtnEnable(pds);
}
//禁用按钮方法
protected void BtnEnable(PagedDataSource pds)
{
btnFirst.Enabled = true;
btnPrevious.Enabled = true;
btnNext.Enabled = true;
btnLast.Enabled = true;
//判断是否是首页
if (pds.IsFirstPage)
{
btnFirst.Enabled = false;
btnPrevious.Enabled = false;
}
//判断是否是尾页
if (pds.IsLastPage)
{
btnNext.Enabled = false;
btnLast.Enabled = false;
}
}
//分页按钮
protected void Pager_Command(object sender, CommandEventArgs e)
{
if (e.CommandName == "First")
{
PageIndex = 0;
}
else if (e.CommandName == "Previous")
{
PageIndex--;
}
else if (e.CommandName == "Next")
{
PageIndex++;
}
else if (e.CommandName == "Last")
{
PageIndex = Convert.ToInt32(ViewState["PageCount"]) - 1;
}
//重新绑定数据
BookListBinds();
}
/// <summary>
/// 设置一页显示数
/// </summary>
protected void PageSize_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
PageSize = Convert.ToInt32(btn.Text);
BookListBinds();
}
/// <summary>
/// 排序方向
/// </summary>
protected void Orientation(String columns)
{
if (Sort == (columns + " asc"))
{
Sort = columns + " desc";
}
else
{
Sort = columns + " asc";
}
}
//出版时间排序
protected void btnPublishDate_Click(object sender, EventArgs e)
{
Orientation("PublishDate");
BookListBinds();
}
//单价排序
protected void btnUnitPrice_Click(object sender, EventArgs e)
{
Orientation("UnitPrice");
BookListBinds();
}
}