一个自用的泛型分页类

代码:

using System;
using System.Collections.Generic;
using System.Text;

namespace Tandy
{

    /// <summary>
    /// 
    /// 分页类
    /// 
    /// 作者:汤晓华 2009年6月27日
    /// 
    /// copyright 2009
    /// 
    /// </summary>
    public class DataPage<T>
    {
        #region 字段

        //索引位置
        private int pageIndex;
        //页面承载的数据条数
        private int pageSize;
        //总数据量
        private int dateCount;
        //结果集
        private IList<T> result;
        //当前结果集中的第一条数在符合条件的数据集中的位置

        #endregion

        #region 属性访问器

        //当前页的索引位置
        public int PageIndex
        {
            get
            {
                if (pageIndex == 0)
                {
                    pageIndex = 1;
                }
                return pageIndex;
            }
            set { pageIndex = value; }
        }

        //页面承载的数据条数
        public int PageSize
        {
            get
            {
                if (pageSize == 0)
                {
                    pageSize = 20;
                }
                return pageSize;
            }
            set { pageSize = value; }
        }

        //总页数
        public int PageCount
        {
            get
            {
                return (dateCount % pageSize) > 0 ? (dateCount / pageSize) + 1 : (dateCount / pageSize);
            }
        }

        /// <summary>
        /// 数据量
        /// </summary>
        public int DateCount
        {
            get { return dateCount; }
            set { dateCount = value; }
        }

        //结果集
        public IList<T> Result
        {
            get { return result; }
            set { result = value; }
        }
        //是否有下一页
        public bool HasPrev
        {
            get
            {
                return pageIndex < PageCount;
            }
        }
        //是否有上一页
        public bool HasNext
        {
            get
            {
                return pageIndex > 1;
            }
        }

        //是否是第一页
        public bool IsFirst
        {
            get
            {
                return pageIndex == 1;
            }
        }

        //是否是最后一页
        public bool IsLast
        {
            get
            {
                return pageIndex == PageCount;
            }
        }

        public int NextPage
        {
            get
            {
                return pageIndex < PageCount ? pageIndex + 1 : pageIndex;
            }
        }

        public int PrevPage
        {
            get
            {
                return pageIndex > 1 ? pageIndex - 1 : pageIndex;
            }
        }

        //当前结果集中的第一条数在符合条件的数据集中的位置
        public int FirstIndex
        {
            get
            {
                return null != result ? (pageIndex - 1) * pageSize + 1 : 0;
            }
        }
        //当前结果集中的最后一条数在符合条件的数据集中的位置
        public int LastIndex
        {
            get
            {
                return null != result ? FirstIndex + result.Count - 1 : 0;
            }
        }

        #endregion

        #region 构造

        public DataPage(int pageIndex, int pageSize)
        {
            this.pageIndex = pageIndex;
            this.pageSize = pageSize;
        }

        public DataPage()
        {

        }

        #endregion

    }

 

}

用法:

DataPage<T> page = new DataPage<T>(pageindex,pageSize);

page.DataCount = 数据条数;

page.Result = IList<T>;

 

DataPage<T> 该类包含了常用的属性。大家有兴趣的可以详细的看一下。可能有bug 小弟没有太多测试。

posted @ 2009-11-30 07:08  tandly  阅读(769)  评论(2编辑  收藏  举报