【原创】两种分页控件的实现

两种分页控件的实现


最近因项目需要,封装了两个分页控件。两个分页控件的工作机制相同,只是界面风格不同。现在拿来和大家分享一下。如果大家有什么好的意见和建议,欢迎指正。

分页控件采用UserControl的形式进行封装,主要维护记录总数,每页行数和当前页索引等数据,提供翻页事件供用户进行订阅和实现。和列表控件分离确保了分页控件的可移植性,可以支持和多种列表的结合。

第一个控件参考了PDF阅读器的风格,提供首页、上一页、下一页和尾页按钮进行翻页操作,另外,用户还可以选择下拉框页数跳转到指定页。同时记录总页数、总记录数和每页行数等信息。界面如下图:


第二种控件和B/S中分页控件的风格相似,也更复杂一些。除提供第一中控件的功能外,同时提供修改每页行数接口。界面如下图:

分页控件类中主要的属性、事件和方法。
属性
<summary>
        /// 当前页索引,默认值是1
        /// </summary>
        public int CurrentPageIndex
        {
            get { return currentPageIndex; }
            set
            {
                if (value <= 0 || value > totalPages)
                {
                    //throw new ArgumentOutOfRangeException();
                }
                currentPageIndex = value;
            }
        }

        /// <summary>
        /// 总记录数
        /// </summary>
        public int TotalRecords
        {
            get { return totalRecords; }
            set { totalRecords = value; }
        }

        /// <summary>
        /// 每页显示的记录数,默认值是20
        /// </summary>
        public int PageSize
        {
            get { return pageSize; }
            set
            {
                if (value < 0 || value > totalRecords)
                {
                    //throw new ArgumentOutOfRangeException();
                }
                pageSize = value;
            }
        }
      翻页事件
public delegate void CurrentPageEventHandler(PagingEventArgs e);

        public event CurrentPageEventHandler CurrentPageEvent;
定义翻页事件参数类,保证了事件的可扩展性
/// <summary>
        /// 翻页页事件参数
        /// </summary>
        public sealed class PagingEventArgs : EventArgs
        {

            #region 属性
            /// <summary>
            /// 当前页索引
            /// </summary>
            public int CurrentPageIndex
            {
                get { return currentPageIndex; }
                set { currentPageIndex = value; }
            }
            /// <summary>
            /// 每页行数
            /// </summary>
            public int PageSize
            {
                get { return pageSize; }
                set { pageSize = value; }
            }
            #endregion

            ...
        }
提供SetParams方法,供用户设置记录总数和每页行数等参数。
public void SetParams(int totalRecords, int pageSize);

分页控件的使用和普通控件一样,将控件拖放到合适的位置,设置相关参数,订阅并实现翻页事件就可以了。具体的分页查询的实现,网上很多,就不啰嗦了。


实现代码,可以到这里下载。





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值