using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace LYFZ.ComponentLibrary
{
    public partial class PagerEx : UserControl
    {
        public delegate void RefreshPage();
        private RefreshPage _refresh;
        /// <summary>
        /// 页显示数
        /// </summary>
        private int _PageSize;
        /// <summary>
        /// 页总数
        /// </summary>
        private int _PageCount = 0;
        /// <summary>
        ///  页码
        /// </summary>
        private int _PageIndex = 1;
        /// <summary>
        /// 数据条数
        /// </summary>
        private int _Count = 0;
        /// <summary>
        /// 跳转页码
        /// </summary>
        private int _GoIndex = 0;

        public void isEnable()
        {
            try
            {
                if (_PageIndex == 1)
                {
                    this.lbtnfrist.Enabled = false;
                    this.lbtnUP.Enabled = false;
                }
                else
                {
                    this.lbtnUP.Enabled = true;
                    this.lbtnfrist.Enabled = true;
                }

                if (this._PageIndex == this._PageCount)
                {
                    this.lbtnDown.Enabled = false;
                    this.lbtnlast.Enabled = false;
                }
                else
                {
                    this.lbtnDown.Enabled = true;
                    this.lbtnlast.Enabled = true;

                }
                if (this._Count == 0)
                {
                    this.lbtnDown.Enabled = false;
                    this.lbtnlast.Enabled = false;
                    this.lbtnfrist.Enabled = false;
                    this.lbtnUP.Enabled = false;
                    this.lbtnGO.Enabled = false;
                }
            }
            catch (Exception)
            {
            }
        }

        /// <summary>
        /// 获取或设置页显示数量
        /// </summary>
        public int PageSize
        {
            get { return _PageSize; }
            set { _PageSize = value; }
        }

        /// <summary>
        /// 获取或设置页数量
        /// </summary>
        public int PageCount
        {
            get { return _PageCount; }
            set
            {
                _PageCount = value;
                labpcount.Text = _PageCount.ToString();

                if (this._PageCount >1)
                {
                    this.lbtnDown.Enabled = true;
                    this.lbtnlast.Enabled = true;
                    this.lbtnfrist.Enabled = true;
                    this.lbtnUP.Enabled = true;
                    this.lbtnGO.Enabled = true;
                }
                if (this._PageCount < Convert.ToInt32(labindex.Text))
                {
                    labindex.Text = "1";
                }
                
            }
        }

        /// <summary>
        /// 获取或设置页码
        /// </summary>
        public int PageIndex
        {
            get { return Convert.ToInt32(labindex.Text); }
            set { _PageIndex = value; }
        }

        /// <summary>
        /// 获取或设置数据总数量
        /// </summary>
        public int Count
        {
            get
            {
                return _Count;
            }
            set
            {
                _Count = value;
                lblCount.Text = Count.ToString();
                if (this.Count == 0)
                {
                    labindex.Text = "1";
                    this.lbtnDown.Enabled = false;
                    this.lbtnlast.Enabled = false;
                    this.lbtnfrist.Enabled = false;
                    this.lbtnUP.Enabled = false;
                    this.lbtnGO.Enabled = false;
                    return;
                }
                
            }
        }
        /// <summary>
        /// 获取或设置跳转页面
        /// </summary>
        public int GoIndex
        {
            get { return _GoIndex; }
            set { _GoIndex = value; }
        }

        /// <summary>
        /// 刷新数据
        /// </summary>
        public RefreshPage RefreshData
        {
            set
            {
                _refresh = value;

            }
        }

        /// <summary>
        /// 构造函数
        /// </summary>
        public PagerEx()
        {
            InitializeComponent();
           
        }

        #region 按钮事件
        private void lbtnfrist_Click(object sender, EventArgs e)
        {
            //首页
            _PageIndex = 1;
            labindex.Text = _PageIndex.ToString();
            lblCount.Text = Count.ToString();
            _refresh();
            isEnable();
            tbxGo.Text = "";
        }

        private void lbtnUP_Click(object sender, EventArgs e)
        {
            //上一页
            int tmp = Convert.ToInt32(labindex.Text);
            tmp = tmp - 1;
            if (tmp <= 0)
            {
                tmp = 1;
            }
            _PageIndex = tmp;
            lblCount.Text = Count.ToString();
            labindex.Text = _PageIndex.ToString();
            _refresh();
            isEnable();
            tbxGo.Text = "";
        }

        private void lbtnDown_Click(object sender, EventArgs e)
        {
            //下一页
            int tmp = Convert.ToInt32(labpcount.Text);
            int tmp2 = Convert.ToInt32(labindex.Text);
            tmp2 = tmp2 + 1;
            if (tmp2 > tmp)
            {
                _PageIndex = tmp;
                labindex.Text = tmp.ToString();
            }
            else
            {
                _PageIndex = tmp2;
                labindex.Text = tmp2.ToString();
            }
            if (this._PageCount == 0)
            {
                labindex.Text = "1";
                this.lbtnDown.Enabled = false;
                this.lbtnlast.Enabled = false;
                this.lbtnfrist.Enabled = false;
                this.lbtnUP.Enabled = false;
                this.lbtnGO.Enabled = false;
                return;
            }
            lblCount.Text = Count.ToString();
            _refresh();
            isEnable();
            tbxGo.Text = "";
        }

        private void lbtnlast_Click(object sender, EventArgs e)
        {
            //最后页
            _PageIndex = Convert.ToInt32(labpcount.Text);
            labindex.Text = labpcount.Text;
            if (this._PageCount == 0)
            {
                labindex.Text = "1";
                this.lbtnDown.Enabled = false;
                this.lbtnlast.Enabled = false;
                this.lbtnfrist.Enabled = false;
                this.lbtnUP.Enabled = false;
                this.lbtnGO.Enabled = false;
                return;
            }
            lblCount.Text = Count.ToString();
            _refresh();
            isEnable();
            tbxGo.Text = "";
        }

        private void lbtnGO_Click(object sender, EventArgs e)
        {
            //跳转
            int tmp = 0;
            try
            {
                tmp = Convert.ToInt32(tbxGo.Text);
            }
            catch
            {
                tmp = 1;
                tbxGo.Text = "1";
            }
            if (tmp <= 0)
            {
                tmp = 1;
            }
            int tmp2 = Convert.ToInt32(labpcount.Text);
            if (tmp > tmp2)
            {
                _PageIndex = tmp2;
            }
            else
            {
                _PageIndex = tmp;
            }
            if (this._PageCount == 0)
            {
                labindex.Text = "1";
                tbxGo.Text = "";
                this.lbtnDown.Enabled = false;
                this.lbtnlast.Enabled = false;
                this.lbtnfrist.Enabled = false;
                this.lbtnUP.Enabled = false;
                this.lbtnGO.Enabled = false;
                return;
            }

            lblCount.Text = Count.ToString();
            labindex.Text = _PageIndex.ToString();
            tbxGo.Text = _PageIndex.ToString();
            _refresh();
            isEnable();
        }
        #endregion
    }
}