分页排序原文

View Code
分页排序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();
    }
}

 

posted @ 2012-06-25 09:16  ComBat  阅读(121)  评论(0编辑  收藏  举报