using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class public_Pager : System.Web.UI.UserControl
{
    /**/
    /// 
    /// 申明委托
    /// 
    /// 
    /// 
    public delegate int EventPagingHandler(EventPagingArg e);
    /**/
    /// 
    /// 分页控件呈现
    /// 
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    public event EventPagingHandler EventPaging;
    /**/
    /// 
    /// 每页显示记录数
    /// 
    private int _pageSize = 100;
    /**/
    /// 
    /// 每页显示记录数
    /// 
    public int PageSize
    {
        get { return _pageSize; }
        set
        {
            _pageSize = value;
            GetPageCount();
        }
    }
    private int _nMax = 0;
    /**/
    /// 
    /// 总记录数
    /// 
    public int NMax
    {
        get { return _nMax; }
        set
        {
            _nMax = value;
            GetPageCount();
        }
    }
    private int _pageCount = 0;
    /**/
    /// 
    /// 页数=总记录数/每页显示记录数
    /// 
    public int PageCount
    {
        get { return _pageCount; }
        set { _pageCount = value; }
    }
    private int _pageCurrent = 0;
    /**/
    /// 
    /// 当前页号
    /// 
    public int PageCurrent
    {
        get { return _pageCurrent; }
        set { _pageCurrent = value; }
    }
    /// 
    /// 设置页面大小
    /// 
    private void GetPageCount()
    {
        if (this.NMax > 0)
        {
            this.PageCount = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(this.NMax) / Convert.ToDouble(this.PageSize)));
            // lblPageCount.Text = " / " + PageCount.ToString();
            lblcurentpage.Text = PageCurrent.ToString() + " / " + PageCount.ToString();
            //lblPageCount1.Text = "每页 "+PageSize .ToString ()+" 条,共 "+PageCount.ToString()+" 页";
            //   lblPageCount1.Text = "Page no: " + PageSize.ToString() + ",Total:" + PageCount.ToString() + " pages";
            //   lblPageCount1.Text =   PageSize.ToString() + "/" + PageCount.ToString() ;
        }
        else
        {
            this.PageCount = 0;
        }
    }
    /**/
    /// 
    /// 翻页控件数据绑定的方法 关键是这步,都是调用这里
    /// 
    public void Bind()
    {
        if (this.EventPaging != null)
        {
            this.NMax = this.EventPaging(new EventPagingArg(this.PageCurrent));
        }
        if (this.PageCurrent > this.PageCount)
        {
            this.PageCurrent = this.PageCount;
        }
        if (this.PageCount == 1)
        {
            this.PageCurrent = 1;
        }
        lblcurentpage.Text = PageCurrent.ToString() + " / " + PageCount.ToString();
        lblRecordCount.Text = "共" + NMax.ToString() + "条";
        // lblRecordCount.Text = "Total: " + NMax.ToString() + " records";
        btnPrev.Enabled = true;
        btnFirst.Enabled = true;
        btnLast.Enabled = true;
        btnNext.Enabled = true;
        if (this.PageCurrent == 1)
        {
            this.btnPrev.Enabled = false;
            this.btnFirst.Enabled = false;
        }
        if (this.PageCurrent == this.PageCount)
        {
            this.btnLast.Enabled = false;
            this.btnNext.Enabled = false;
        }
        if (this.NMax == 0)
        {
            btnNext.Enabled = false;
            btnLast.Enabled = false;
            btnFirst.Enabled = false;
            btnPrev.Enabled = false;
        }
        cmbPagecount.Items.Clear();
        for (int i = 1; i <= PageCount; i++)
        {
            cmbPagecount.Items.Add(i.ToString());
            //if(i== PageCurrent - 1){
            //    cmbPagecount.SelectedItem = cmbPagecount.Items[i - 1];
            //}
        }
        this.cmbPagecount.SelectedIndexChanged -= new System.EventHandler(this.cmbPagecount_SelectedIndexChanged);
        cmbPagecount.SelectedIndex = PageCurrent - 1;
        this.cmbPagecount.SelectedIndexChanged += new System.EventHandler(this.cmbPagecount_SelectedIndexChanged);
        comPagesize.Items.Clear();
        for (int i = 100; i <= 900; i += 100)
        {
            comPagesize.Items.Add(i.ToString());
        }
        /*
        for (int i = 50; i <= 500; i+=50)
        {
            comPagesize.Items.Add(i.ToString());
                
        }
        */
        for (int i = 1000; i <= 5000; i += 1000)
        {
            comPagesize.Items.Add(i.ToString());
        }
        this.comPagesize.SelectedIndexChanged -= new System.EventHandler(this.comPagesize_SelectedIndexChanged);
        //   comPagesize.SelectedIndex = this._pageSize / 100 -1;
        //  comPagesize.SelectedIndex = this._pageSize / 50 - 1  ;
        comPagesize.SelectedIndex = _pageSize <= 1000 ? this._pageSize / 100 - 1 : 10 + _pageSize / 1000 - 2;
        this.comPagesize.SelectedIndexChanged += new System.EventHandler(this.comPagesize_SelectedIndexChanged);
    }
    /// 
    /// 首页
    /// 
    /// 
    /// 
    public void btnFirst_Click(object sender, ImageClickEventArgs e)
    {
        PageCurrent = 1;
        this.Bind();
    }
    //上一页
    /// 
    /// 
    /// 
    /// 
    /// 
    public void btnPrev_Click(object sender, ImageClickEventArgs e)
    {
        PageCurrent -= 1;
        if (PageCurrent <= 0)
        {
            PageCurrent = 1;
        }
        this.Bind();
    }
    /// 
    /// 下一页
    /// 
    /// 
    /// 
    public void btnNext_Click(object sender, ImageClickEventArgs e)
    {
        this.PageCurrent += 1;
        if (PageCurrent > PageCount)
        {
            PageCurrent = PageCount;
        }
        this.Bind();
    }
    /// 
    /// 最后页
    /// 
    /// 
    /// 
    public void btnLast_Click(object sender, ImageClickEventArgs e)
    {
        PageCurrent = PageCount;
        this.Bind();
    }
    /// 
    /// 转到新页
    /// 
    /// 
    /// 
    public void btnGo_Click(object sender, ImageClickEventArgs e)
    {
        if (Int32.TryParse(cmbPagecount.SelectedItem.ToString(), out _pageCurrent))
        {
            this.Bind();
        }
    }
    public void cmbPagecount_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (Int32.TryParse(cmbPagecount.SelectedItem.ToString(), out _pageCurrent))
        {
            this.Bind();
        }
    }
    public void comPagesize_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (Int32.TryParse(comPagesize.SelectedItem.ToString(), out _pageSize))
        {
            GetPageCount();
            this.Bind();
        }
    }
     
     
} /**/
/// 
/// 自定义事件数据基类
/// 
public class EventPagingArg : EventArgs
{
    private int _intPageIndex;
    public EventPagingArg(int PageIndex)
    {
        _intPageIndex = PageIndex;
    }
}