计算思想:
以当前页码为标杆,使用卡尺的思想,左移,右移,再左移,最后得到起始、结束位置的按钮页码。
@{
var param = new
{
Page = 18, //当前页
NumberButton = 5,//数字按钮的个数
PageSize = 5,//分页数据量
Records = 94//总数据量
};
}
@{
/*****************
* Author : Kilin
* Datetime : 2015-05-08
* Email : [email protected]
* Description : 在保证当前页码处于中间位置前提下,计算数字按钮的起始和结束位置
******************/
int start = param.Page //开始按钮数字
, end = 1 //结束按钮数字
, pageCount = (int)Math.Ceiling((double)param.Records / (double)param.PageSize) //总页数
, offset = param.NumberButton / 2 //偏移量
;
start -= offset;//计算左偏移量
start = start < 1 ? 1 : start;//限定最小页码
end = start + param.NumberButton - 1;//根据偏移计算结束按钮
end = end > pageCount ? pageCount : end;//限定最大页码
start = end - param.NumberButton + 1;//根据偏移计算开始页码
start = start < 1 ? 1 : start;//限定最小页码
}