用户控件制作分页控件

今天项目中有新的需求,需要自己写分页。这个时候Gridview自带的分页功能就不能用了,在网上也找了一些分页控件,不过觉得用起来属性太多,很不爽。就自己写了一个。

现在记录下来,以备后用,同时也分享给大家。现在来说说思路:

1.其实我们用分页控件无非就一个目的:根据当前页索引显示当前页数据,那么要实现这个功能需要从用户控件中获取到当前页索引,这时我们需要设一个公共属性CurrentIndex。用来记录当前页索引。

2.这时有个问题,在用户控件中页索引改变后该如何通知引用页来获取当前页索引呢,这个时候就需要在用户控件页注册一个事件了。也就是用户控件中需要暴露一个事件。这个事件要在上一页、下一页、最后一页、第一页等各个页索引切换按钮事件中注册。

3.这个时候就可以在用户也引用并使用了。

语言组织能力不是很好,现在把代码列出来:

.aspx页面代码:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CustomerPager.ascx.cs" Inherits="LTP.Web.WebControll.CustomerPager" %>
<div>
    <asp:Label ID="lblCurrentIndex" runat="server" /><span>/</span>
    <asp:Label ID="lblPageCount" runat="server" />
    <asp:ImageButton ID="ibtnFirstPage" ImageUrl="~/App_Themes/Default/Images/pagefirst_disable.gif" runat="server" OnClick="ibtnFirstPage_Click" />
    <asp:ImageButton ID="ibtnPrePage" runat="server" ImageUrl="~/App_Themes/Default/Images/pageprevious_disable.gif" OnClick="ibtnPrePage_Click" />
    <asp:ImageButton ID="ibtnNextPage" runat="server" ImageUrl="~/App_Themes/Default/Images/pagenext.gif" OnClick="ibtnNextPage_Click" />
    <asp:ImageButton ID="ibtnLastPage" runat="server" ImageUrl="~/App_Themes/Default/Images/pagelast.gif" OnClick="ibtnLastPage_Click" />
    <span>To</span>
    <asp:DropDownList ID="ddlSelectPageIndex" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlSelectPageIndex_SelectedChanged" />
    <asp:ImageButton ID="ibtnHiddenReload" runat="server" OnClick="ibtnHiddenReload_Click" />
</div>


.cs页面代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace LTP.Web.WebControll
{
    public partial class CustomerPager : System.Web.UI.UserControl
    {
        #region---私有字段---
        //总页数
        private static int pageCount = 1;
        //当前页
        private static int currentIndex = 1;
        #endregion

        #region---属性---
        /// <summary>
        /// 总页数
        /// </summary>
        public int PageCount
        {
            set { pageCount = value; }
            get { return pageCount; }
        }
        /// <summary>
        /// 当前页
        /// </summary>
        public int CurrentIndex
        {
            set { currentIndex = value; }
            get { return currentIndex; }
        }
        //自定义事件
        public event EventHandler PagerIndexChanged;

        #endregion

        #region---Page_Load事件---
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //绑定下拉框页码
                BindSelectIndexPager();
                BindPagerInfo();
            }
            
        }
        #endregion

        #region---事件---

        #region---分页事件---
        /// <summary>
        /// 跳转到第一页
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ibtnFirstPage_Click(object sender, EventArgs e)
        {
            currentIndex = 1;
            BindPagerInfo();
            PagerIndexChanged(sender, e);
        }

        /// <summary>
        /// 上一页事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ibtnPrePage_Click(object sender, EventArgs e)
        {
            if (currentIndex > 1)
            {
                currentIndex -= 1;
                BindPagerInfo();
                PagerIndexChanged(sender, e);
            }

        }

        /// <summary>
        /// 下一页事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ibtnNextPage_Click(object sender, EventArgs e)
        {
            if (currentIndex < pageCount)
            {
                currentIndex += 1;
                BindPagerInfo();
                PagerIndexChanged(sender, e);
            }
        }

        /// <summary>
        /// 最后一页事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ibtnLastPage_Click(object sender, EventArgs e)
        {
            if (currentIndex < pageCount)
            {
                currentIndex = pageCount;
                BindPagerInfo();
                PagerIndexChanged(sender, e);
            }
        }
        /// <summary>
        /// 页码下拉框切换事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ddlSelectPageIndex_SelectedChanged(object sender, EventArgs e)
        {
            currentIndex = Convert.ToInt32(this.ddlSelectPageIndex.SelectedItem.Text.Trim());
            BindPagerInfo();
            PagerIndexChanged(sender, e);
        }

        /// <summary>
        /// 重新绑定用户控件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ibtnHiddenReload_Click(object sender, EventArgs e)
        {
            BindPagerInfo();
        }
        #endregion
        #endregion


        #region---私有方法---

        /// <summary>
        /// 绑定下拉框页码
        /// </summary>
        private void BindSelectIndexPager()
        {
            this.ddlSelectPageIndex.Items.Clear();
            for (int i = 1; i <= pageCount; i++)
            {
                this.ddlSelectPageIndex.Items.Add(i.ToString());
            }
        }


        /// <summary>
        /// 绑定分页数据
        /// </summary>
        private void BindPagerInfo()
        {
            BindSelectIndexPager();
            if (currentIndex > pageCount)
            {
                currentIndex = pageCount;
            }
            this.lblCurrentIndex.Text = currentIndex.ToString();
            this.lblPageCount.Text = pageCount.ToString();
            this.ddlSelectPageIndex.Text = currentIndex.ToString();
            //当总页数为一
            if (pageCount <= 1)
            {
                this.ibtnFirstPage.ImageUrl = "~/App_Themes/Default/Images/pagefirst_disable.gif";
                this.ibtnPrePage.ImageUrl = "~/App_Themes/Default/Images/pageprevious_disable.gif";
                this.ibtnNextPage.ImageUrl = "~/App_Themes/Default/Images/pagenext_disable.gif";
                this.ibtnLastPage.ImageUrl = "~/App_Themes/Default/Images/pagelast_disable.gif";
            }
            //当页码为最后一页
            else if (currentIndex >= pageCount)
            {
                this.ibtnFirstPage.ImageUrl = "~/App_Themes/Default/Images/pagefirst.gif";
                this.ibtnPrePage.ImageUrl = "~/App_Themes/Default/Images/pageprevious.gif";
                this.ibtnNextPage.ImageUrl = "~/App_Themes/Default/Images/pagenext_disable.gif";
                this.ibtnLastPage.ImageUrl = "~/App_Themes/Default/Images/pagelast_disable.gif";
            }
            //当页码为一
            else if (currentIndex <= 1)
            {
                this.ibtnFirstPage.ImageUrl = "~/App_Themes/Default/Images/pagefirst_disable.gif";
                this.ibtnPrePage.ImageUrl = "~/App_Themes/Default/Images/pageprevious_disable.gif";
                this.ibtnNextPage.ImageUrl = "~/App_Themes/Default/Images/pagenext.gif";
                this.ibtnLastPage.ImageUrl = "~/App_Themes/Default/Images/pagelast.gif";
            }
            //当页码为中间值
            else
            {
                this.ibtnFirstPage.ImageUrl = "~/App_Themes/Default/Images/pagefirst.gif";
                this.ibtnPrePage.ImageUrl = "~/App_Themes/Default/Images/pageprevious.gif";
                this.ibtnNextPage.ImageUrl = "~/App_Themes/Default/Images/pagenext.gif";
                this.ibtnLastPage.ImageUrl = "~/App_Themes/Default/Images/pagelast.gif";
            }
        }
        #endregion
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值