C#分页代码

本文档介绍了一个C#分页控件的实现,包括事件处理、属性设置和页面导航功能。控件提供了记录总数、每页记录数、当前页等属性,并支持中文和英文两种语言。用户可以自定义翻页按钮的文本,并通过事件处理更新页面数据。

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;

namespace CSHome.Pager
{
    public class Pager : Control, INamingContainer
    {
        [Description("操作员选择不同页时产生的页更新事件,通过此事件处理把旧页面显示信息更新到选择页对应的数据信息")]
        public event EventHandler PageChanged;

        private int rectotal = 0;
        private int pagesize = 10;
        private int curpage = 0;
        private int lang = 0;
        private int pagetotal = 0;

        private string firstpagetext = "首页";//"<FONT face=webdings>9</FONT>";
        private string prevpagetext = "上页";//"<FONT face=webdings>3</FONT>";
        private string nextpagetext = "下页";//"<FONT face=webdings>4</FONT>";
        private string lastpagetext = "末页";//"<FONT face=webdings>:</FONT>";

        protected virtual void temp_Click(object sender, EventArgs e)
        {
            if (PageChanged != null)
            {
                PageChanged(this, e);
            }
        }

        #region Pager控件使用帮助及参数说明
        /*
   本控件带有三个自定义属性和一个方法.具体如下:
   属性:
    RecTotal 记录总数 默认值:0
    PageSize 每页记录数 默认值:0
    CurPage  当前页  默认值:0
    Lang  版本语言 默认值:0 注:0为中文版,1为英文版
   方法:
    PagerBind 绑定当前自定义控件,如不绑定,该控件则不能显示到页面上
   */
        #endregion

        #region 控件属性列表

        [Category("分页控制"), Description("数据集所有页记录总数")]
        public int RecTotal
        {
            get { return rectotal; }
            set { rectotal = value; }
        }

        [Category("分页控制"), Description("每页显示记录数量")]
        public int PageSize
        {
            get { return pagesize; }
            set { pagesize = value; }
        }

        [Category("分页控制"), Description("当前显示页")]
        public int CurPage
        {
            get { return curpage; }
            set { curpage = value; }
        }

        [Category("分页控制"), Description("数据集页总数")]
        public int PageTotal
        {
            set { pagetotal = value; }
        }

        [Category("分页控制"), Description("翻页条显示语言别,0为中文,1为英文")]
        public int Lang
        {
            get { return lang; }
            set { lang = value; }
        }

        [Category("分页控制"), Description("首页按钮文本,例如可用:第一页")]
        public string FirstPageText  //
        {
            get { return firstpagetext; }
            set { firstpagetext = value; }
        }

        [Category("分页控制"), Description("前页按钮文本,例如可用:上一页")]
        public string PrevPageText
        {
            get { return prevpagetext; }
            set { prevpagetext = value; }
        }

        [Category("分页控制"), Description("下页按钮文本,例如可用:下一页")]
        public string NextPageText
        {
            get { return nextpagetext; }
            set { nextpagetext = value; }
        }

        [Category("分页控制"), Description("尾页按钮文本,例如可用:最后页")]
        public string LastPageText
        {
            get { return lastpagetext; }
            set { lastpagetext = value; }
        }

        #endregion

        protected override void CreateChildControls()
        {
            ViewState["FirstPageText"] = firstpagetext;
            ViewState["PrevPageText"] = prevpagetext;
            ViewState["NextPageText"] = nextpagetext;
            ViewState["LastPageText"] = lastpagetext;

            Label lbl_PageInfo = new Label();     //0
            lbl_PageInfo.Text = "尚未绑定";
            Controls.Add(lbl_PageInfo);

            LinkButton btn_First = new LinkButton();   //1
            btn_First.Text = ViewState["FirstPageText"].ToString();
            Controls.Add(btn_First);
            btn_First.Visible = true;
            btn_First.CausesValidation = false;
            btn_First.Click += new System.EventHandler(btn_First_Click);

            Controls.Add(new LiteralControl(" "));    //2

            LinkButton btn_Pre = new LinkButton();    //3
            btn_Pre.Text = ViewState["PrevPageText"].ToString();
            Controls.Add(btn_Pre);
            btn_Pre.Visible = true;
            btn_Pre.CausesValidation = false;
            btn_Pre.Click += new System.EventHandler(btn_Pre_Click);

            Controls.Add(new LiteralControl(" "));    //4

            LinkButton btn_Next = new LinkButton();    //5
            btn_Next.Text = ViewState["NextPageText"].ToString();
            Controls.Add(btn_Next);
            btn_Next.Visible = true;
            btn_Next.CausesValidation = false;
            btn_Next.Click += new System.EventHandler(btn_Next_Click);

            Controls.Add(new LiteralControl(" "));    //6

            LinkButton btn_Last = new LinkButton();    //7
            btn_Last.Text = ViewState["LastPageText"].ToString();
            Controls.Add(btn_Last);
            btn_Last.Visible = true;
            btn_Last.CausesValidation = false;
            btn_Last.Click += new System.EventHandler(btn_Last_Click);

            Controls.Add(new LiteralControl("&nbsp;&nbsp;")); //8

            Label lbl_1 = new Label();       //9
            lbl_1.Text = "转到";
            lbl_1.Visible = false;
            Controls.Add(lbl_1);

            DropDownList drop_CurPage = new DropDownList();  //10
            drop_CurPage.Items.Add("0");
            Controls.Add(drop_CurPage);
            drop_CurPage.AutoPostBack = true;
            drop_CurPage.Visible = true;
            drop_CurPage.SelectedIndexChanged += new System.EventHandler(drop_CurPage_SelectedIndexChanged);

            Label lbl_2 = new Label();       //11
            lbl_2.Text = "页";
            lbl_2.Visible = true;
            Controls.Add(lbl_2);
        }

        protected override void OnPreRender(EventArgs e)
        {
            StartVar();
            PagerBind();
            //if (!Page.IsPostBack)
            //{
            //    StartVar();
            //    PagerBind();
            //}
        }

        protected void StartVar() //初始各参数.希望只执行一次
        {
            ViewState["RecTotal"] = rectotal;
            ViewState["PageSize"] = pagesize;
            ViewState["CurPage"] = curpage;
            ViewState["Lang"] = lang;
            ViewState["PageTotal"] = pagetotal;
        }

        #region 相关方法及事件
        public void PagerBind()
        {
            ViewState["PageTotal"] = ((int)ViewState["RecTotal"] % (int)ViewState["PageSize"] > 0) ? (int)ViewState["RecTotal"] / (int)ViewState["PageSize"] + 1 : (int)ViewState["RecTotal"] / (int)ViewState["PageSize"];        //页总数
            if ((int)ViewState["Lang"] == 0)
            {
                ((Label)Controls[0]).Text = "总共<font color=red>" + ViewState["RecTotal"].ToString() + "</font>条 <font color=red>" + ViewState["PageSize"].ToString() + "</font>条/页 当前<font color=red>" + ((int)ViewState["CurPage"] + 1).ToString() + "</font>/<font color=red>" + ViewState["PageTotal"].ToString() + "</font>页&nbsp;&nbsp;";
            }
            else
            {
                ((Label)Controls[0]).Text = "Total<font color=red>" + ViewState["RecTotal"].ToString() + "</font>Info <font color=red>" + ViewState["PageSize"].ToString() + "</font>/Page Current<font color=red>" + ((int)ViewState["CurPage"] + 1).ToString() + "</font>/<font color=red>" + ViewState["PageTotal"].ToString() + "</font>Page&nbsp;&nbsp;";
                ((Label)Controls[9]).Text = "To";
                ((Label)Controls[11]).Text = "Page";
            }
            ((DropDownList)Controls[10]).Items.Clear();

            int i = 0;
            do
            {
                ((DropDownList)Controls[10]).Items.Add(Convert.ToString(i + 1));
                i++;
            }
            while (i < (int)ViewState["PageTotal"]);

            ((DropDownList)Controls[10]).SelectedIndex = ((DropDownList)Controls[10]).Items.IndexOf(((DropDownList)Controls[10]).Items.FindByValue(Convert.ToString((int)ViewState["CurPage"] + 1)));



            ((LinkButton)Controls[1]).Visible = true;
            ((LinkButton)Controls[3]).Visible = true;
            ((LinkButton)Controls[5]).Visible = true;
            ((LinkButton)Controls[7]).Visible = true;
            ((Label)Controls[9]).Visible = true;
            ((Label)Controls[11]).Visible = true;
            ((DropDownList)Controls[10]).Visible = true;

            ((LinkButton)Controls[1]).Enabled = true;
            ((LinkButton)Controls[3]).Enabled = true;
            ((LinkButton)Controls[5]).Enabled = true;
            ((LinkButton)Controls[7]).Enabled = true;

            if ((int)ViewState["CurPage"] == 0)
            {
                ((LinkButton)Controls[1]).Enabled = false;
                ((LinkButton)Controls[3]).Enabled = false;
                ((LinkButton)Controls[5]).Enabled = true;
                ((LinkButton)Controls[7]).Enabled = true;
            }
            if ((int)ViewState["CurPage"] == ((int)ViewState["PageTotal"] - 1))
            {
                ((LinkButton)Controls[1]).Enabled = true;
                ((LinkButton)Controls[3]).Enabled = true;
                ((LinkButton)Controls[5]).Enabled = false;
                ((LinkButton)Controls[7]).Enabled = false;
            }
            if (((int)ViewState["PageTotal"] - 1) == 0)
            {
                ((LinkButton)Controls[1]).Enabled = false;
                ((LinkButton)Controls[3]).Enabled = false;
                ((LinkButton)Controls[5]).Enabled = false;
                ((LinkButton)Controls[7]).Enabled = false;
            }
            if (((int)ViewState["RecTotal"]) == 0)
            {
                ((LinkButton)Controls[1]).Enabled = false;
                ((LinkButton)Controls[3]).Enabled = false;
                ((LinkButton)Controls[5]).Enabled = false;
                ((LinkButton)Controls[7]).Enabled = false;
            }

            CurPage = (int)ViewState["CurPage"];
            RecTotal = (int)ViewState["RecTotal"];
            PageSize = (int)ViewState["PageSize"];
            CurPage = (int)ViewState["CurPage"];
            Lang = (int)ViewState["Lang"];
            PageTotal = (int)ViewState["PageTotal"];
        }


        private void drop_CurPage_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            ViewState["CurPage"] = ((DropDownList)Controls[10]).SelectedIndex;
            PagerBind();

            if (PageChanged != null)
                temp_Click(this, EventArgs.Empty);
        }

        private void btn_First_Click(object sender, System.EventArgs e)
        {
            ViewState["CurPage"] = 0;
            PagerBind();

            if (PageChanged != null)
                temp_Click(this, EventArgs.Empty);
        }

        private void btn_Pre_Click(object sender, System.EventArgs e)
        {
            ViewState["CurPage"] = (int)ViewState["CurPage"] - 1;
            PagerBind();

            if (PageChanged != null)
                temp_Click(this, EventArgs.Empty);
        }

        private void btn_Next_Click(object sender, System.EventArgs e)
        {
            ViewState["CurPage"] = (int)ViewState["CurPage"] + 1;
            PagerBind();

            if (PageChanged != null)
                temp_Click(this, EventArgs.Empty);
        }

        private void btn_Last_Click(object sender, System.EventArgs e)
        {
            ViewState["CurPage"] = (int)ViewState["PageTotal"] - 1;
            PagerBind();

            if (PageChanged != null)
                temp_Click(this, EventArgs.Empty);
        }
        #endregion
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值