1、分页列表
2、分页实体类(WebApp.Models)
public class TaskDefinitionModel: KTD.WorkFlowService.TaskDefinition
{
public KTD.Providers.PagingData.PagedList<KTD.WorkFlowService.TaskDefinition> PagedList { get; set; }
/// <summary>
/// 数据库列的名称,通过它对数据进行排序
/// </summary>
public string SortBy { get; set; }
/// <summary>
/// 一个布尔值,指示是否升序排序数据
/// </summary>
public bool SortAscending { get; set; }
/// <summary>
/// 一个只读属性,返回一个排序的值的字符串SortBy SortAscending属性
/// </summary>
public string SortExpression
{
get
{
return this.SortAscending ? this.SortBy + " desc" : this.SortBy + " asc";
}
}
}
{
public KTD.Providers.PagingData.PagedList<KTD.WorkFlowService.TaskDefinition> PagedList { get; set; }
/// <summary>
/// 数据库列的名称,通过它对数据进行排序
/// </summary>
public string SortBy { get; set; }
/// <summary>
/// 一个布尔值,指示是否升序排序数据
/// </summary>
public bool SortAscending { get; set; }
/// <summary>
/// 一个只读属性,返回一个排序的值的字符串SortBy SortAscending属性
/// </summary>
public string SortExpression
{
get
{
return this.SortAscending ? this.SortBy + " desc" : this.SortBy + " asc";
}
}
}
3、分页控制类(WebApp.Controllers)
public ActionResult Index(string keywords, bool? ascending, string sortBy = "ProcessDefinitionID,OrderValue", int pageIndex = 1, int pageSize = 10){
List<TaskDefinition> list = tdBLL.GetAll(sortBy,false);
PagedList<TaskDefinition> pagedList = new PagedList<TaskDefinition>(list, pageIndex, pageSize);
var model = new WebApp.Models.TaskDefinitionModel
{
SortBy = sortBy,
SortAscending = ascending.GetValueOrDefault(),
PagedList = pagedList
};
return View(model);
}
3、分页页面(Views/TaskDefinition/_PagerLink.cshtml)
@model WebApp.Models.TaskDefinitionModel
@{
var razorWriter = ViewContext.Writer;
var razorWriter = ViewContext.Writer;
var currentPage = Model.PagedList.PageIndex;
var totalCount = Model.PagedList.TotalItemCount;
var pageSize = Model.PagedList.PageSize;
pageSize = pageSize == 0 ? 3 : pageSize;
var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数
var routeData = new RouteValueDictionary { { "pageIndex", currentPage }, { "pageSize", pageSize } };
if (!string.IsNullOrEmpty(Request.QueryString["sortBy"]))
{
routeData.Add("sortBy", Request.QueryString["sortBy"]);
}
if (!string.IsNullOrEmpty(Request.QueryString["ascending"]))
{
routeData.Add("ascending", Request.QueryString["ascending"]);
}
var output = new System.Text.StringBuilder();
var htmlAttributes = new Dictionary<string, object>();
htmlAttributes.Add("class", "pageLink");
if (totalPages > 1)
{
routeData["pageIndex"] = 1;
output.Append(Html.ActionLink("首页", Html.ViewContext.RouteData.Values["action"].ToString(), Html.ViewContext.RouteData.Values["controller"].ToString(), routeData, htmlAttributes).ToHtmlString());
if (currentPage > 1)
{
routeData["pageIndex"] = currentPage - 1;
output.Append(Html.ActionLink("上一页", Html.ViewContext.RouteData.Values["action"].ToString(), Html.ViewContext.RouteData.Values["controller"].ToString(), routeData, htmlAttributes).ToHtmlString());
}
output.Append(" ");
int currint = 5;
for (int i = 0; i <= 10; i++)
{
if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)
{
if (currint == i)
{
var cpbAttributes = new Dictionary<string, object>();
cpbAttributes.Add("class", "cpb");
routeData["pageIndex"] = currentPage;
output.Append(Html.ActionLink(currentPage.ToString(), Html.ViewContext.RouteData.Values["action"].ToString(), Html.ViewContext.RouteData.Values["controller"].ToString(), routeData, cpbAttributes).ToHtmlString());
}
else
{
routeData["pageIndex"] = currentPage + i - currint;
output.Append(Html.ActionLink((currentPage + i - currint).ToString(), Html.ViewContext.RouteData.Values["action"].ToString(), Html.ViewContext.RouteData.Values["controller"].ToString(), routeData, htmlAttributes).ToHtmlString());
}
}
output.Append(" ");
}
if (currentPage < totalPages)
{
routeData["pageIndex"] = currentPage + 1;
output.Append(Html.ActionLink("下一页", Html.ViewContext.RouteData.Values["action"].ToString(), Html.ViewContext.RouteData.Values["controller"].ToString(), routeData, htmlAttributes).ToHtmlString());
}
output.Append(" ");
if (currentPage != totalPages)
{
routeData["pageIndex"] = totalPages;
output.Append(Html.ActionLink("末页", Html.ViewContext.RouteData.Values["action"].ToString(), Html.ViewContext.RouteData.Values["controller"].ToString(), routeData, htmlAttributes).ToHtmlString());
}
output.Append(" ");
}
output.AppendFormat("<label>第{0}页 / 共{1}页</label>", currentPage, totalPages);
razorWriter.Write(output.ToString());
}