/// <summary>
/// 分页
/// </summary>
/// <param name="helper"></param>
/// <param name="id">分页id</param>
/// <param name="currentPageIndex">当前页</param>
/// <param name="pageSize">分页尺寸</param>
/// <param name="recordCount">记录总数</param>
/// <param name="htmlAttributes">分页头标签属性</param>
/// <param name="className">分页样式</param>
/// <param name="mode">分页模式</param>
/// <returns></returns>
public
static
string
Pager(
this
HtmlHelper helper,
string
id,
int
currentPageIndex,
int
pageSize,
int
recordCount,
object
htmlAttributes,
string
className, PageMode mode)
{
TagBuilder builder =
new
TagBuilder(
"div"
);
builder.IdAttributeDotReplacement =
"_"
;
builder.GenerateId(id);
builder.AddCssClass(className);
builder.MergeAttributes(
new
RouteValueDictionary(htmlAttributes));
builder.InnerHtml = GetNormalPage(currentPageIndex, pageSize, recordCount, mode);
return
builder.ToString();
}
/// <summary>
/// 获取普通分页
/// </summary>
/// <param name="currentPageIndex"></param>
/// <param name="pageSize"></param>
/// <param name="recordCount"></param>
/// <returns></returns>
private
static
string
GetNormalPage(
int
currentPageIndex,
int
pageSize,
int
recordCount, PageMode mode)
{
int
pageCount = (recordCount % pageSize == 0 ? recordCount / pageSize : recordCount / pageSize + 1);
StringBuilder url =
new
StringBuilder();
url.Append(HttpContext.Current.Request.Url.AbsolutePath +
"?page={0}"
);
NameValueCollection collection = HttpContext.Current.Request.QueryString;
string
[] keys = collection.AllKeys;
for
(
int
i = 0; i < keys.Length; i++)
{
if
(keys[i].ToLower() !=
"page"
)
url.AppendFormat(
"&{0}={1}"
, keys[i], collection[keys[i]]);
}
StringBuilder sb =
new
StringBuilder();
sb.Append(
"<div class='col-sm-6'>"
);
sb.Append(
"<div class='dataTables_info' id='sample-table-2_info'>"
);
sb.AppendFormat(
"总共{0}条记录,共{1}页,当前第{2}页 "
, recordCount, pageCount, currentPageIndex);
sb.Append(
"</div></div>"
);
sb.Append(
"<div class='col-sm-6'>"
);
sb.Append(
"<div class='dataTables_paginate paging_bootstrap'>"
);
sb.Append(
"<ul class='pagination'>"
);
if
(currentPageIndex == 1)
sb.Append(
"<li class='active'><a href='#'>首页</a></li> "
);
else
{
string
url1 =
string
.Format(url.ToString(), 1);
sb.AppendFormat(
"<li><a href={0}>首页</a></li> "
, url1);
}
if
(currentPageIndex > 1)
{
string
url1 =
string
.Format(url.ToString(), currentPageIndex - 1);
sb.AppendFormat(
"<li class='prev'><a href={0}><i class='icon-double-angle-left'></i></a></li> "
, url1);
}
else
sb.Append(
"<li class='prev disabled'><a href='#'><i class='icon-double-angle-left'></i></a></li> "
);
if
(mode == PageMode.Numeric)
sb.Append(GetNumericPage(currentPageIndex, pageSize, recordCount, pageCount, url.ToString()));
if
(currentPageIndex < pageCount)
{
string
url1 =
string
.Format(url.ToString(), currentPageIndex + 1);
sb.AppendFormat(
"<li class='next'><a href={0}><i class='icon-double-angle-right'></i></a></li> "
, url1);
}
else
sb.Append(
"<li class='next disabled'><a href='#'><i class='icon-double-angle-right'></i></a></li> "
);
if
(currentPageIndex == pageCount)
sb.Append(
"<li><a href='#'>末页</a></li> "
);
else
{
string
url1 =
string
.Format(url.ToString(), pageCount);
sb.AppendFormat(
"<li><a href={0}>末页</a></li> "
, url1);
}
sb.Append(
"</ul>"
);
sb.Append(
"</div>"
);
return
sb.ToString();
}