分页排序原文
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
分页排序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(); } }