BootStrap-Table 分页

来源:互联网 发布:东海局势 知乎 编辑:程序博客网 时间:2024/04/27 22:48

bootstrap-Table:http://bootstrap-table.wenzhixin.net.cn/

页面

<div class="widget-content">    <div id="toolbar">        <a id="add" class="btn btn-default" href="/CompanyInfo/Add">            <i class="glyphicon glyphicon-plus"></i> 新建        </a>    </div>    <table id="table" class="table table-bordered dataTable"           data-toggle="table"           data-search="true"           data-toolbar="#toolbar"           data-url="@Url.Action("GetPageData")"           data-method="post"           data-content-type="application/x-www-form-urlencoded"           data-side-pagination="server"           data-pagination="true"           data-sort-name="CompanyName"           data-sort-order="asc"           data-query-params="queryParams">        <thead>            <tr>                <th data-field="CompanyName" data-sortable="true" data-halign="center">企业名称</th>                <th data-field="CompanyShort" data-sortable="true" data-halign="center">企业简称</th>                <th data-field="Address" data-sortable="true" data-halign="center">地址</th>                <th data-field="LinkName" data-sortable="true" data-halign="center">联系人</th>                <th data-field="LinkTel" data-sortable="true" data-halign="center">联系电话</th>                <th data-align="center" data-formatter="operateFormatter" data-width="60px"></th>            </tr>        </thead>    </table></div>
<link rel="stylesheet" href="~/Content/bootstrap-table.css" />@section scripts{    <script src="~/Scripts/bootstrap-table.js" type="text/javascript"></script>    <script src="~/Scripts/locales/bootstrap-table-zh-CN.js" type="text/javascript"></script>    <script src="~/Scripts/bootstrap.tables.js" type="text/javascript"></script>    <script type="text/javascript">        //设置传入参数        function queryParams(params) {            return params;        }         //操作按钮        function operateFormatter(value, row) {            return '<a href="@Url.Action("Edit")/' + row.CompanyID + '"><i class="glyphicon glyphicon-edit"></i></a>&nbsp;&nbsp;' +                '<a href="@Url.Action("Delete")/' + row.CompanyID + '" onclick="return confirm("确认删除?")"><i class="glyphicon glyphicon-remove"></i></a>';        }    </script>}
控制器代码:

/// <summary>/// 获取数据/// </summary>/// <returns></returns>[HttpPost]public JsonResult GetPageData(){    //limit, offset, search, sort, order     //pageSize, pageNumber, searchText, sortName, sortOrder.     int pageSize = Convert.ToInt32(Request.Form["limit"]);    int pageNumber = Convert.ToInt32(Request.Form["offset"]);    string sortName = Request.Form["sort"];    string sortOrder = Request.Form["order"];    string searchText = Request.Form["search"];     int total;    var rows = String.IsNullOrEmpty(searchText)        ? _service.GetPageData(sortName, sortOrder, pageNumber, pageSize, out total)        : _service.GetPageData(m => m.CompanyName.Contains(searchText), sortName, sortOrder, pageNumber, pageSize,            out total);    var json = Json(new { total, rows }, JsonRequestBehavior.AllowGet);    return json;}

分页代码:

/// <summary>/// 查找分页数据列表/// </summary>/// <param name="pageNumber">当前页</param>/// <param name="pageSize">每页记录数</param>/// <param name="totalRecord">总记录数</param>/// <param name="predicate">查询表达式</param>/// <param name="sortOrder">是否升序</param>/// <param name="sortName">排序字段名称</param>/// <returns>实例列表</returns>public IQueryable<T> GetPageData<TS>(Expression<Func<T, bool>> predicate, string sortName, string sortOrder,    int pageNumber, int pageSize, out int totalRecord){    _nContext.Configuration.LazyLoadingEnabled = false;    _nContext.Configuration.ProxyCreationEnabled = false;    var list = _nContext.Set<T>().Where<T>(predicate);    totalRecord = list.Count();    list = OrderBy(list, sortName, sortOrder == "asc").Skip(pageNumber * pageSize).Take(pageSize);    _nContext.Configuration.LazyLoadingEnabled = true;    _nContext.Configuration.ProxyCreationEnabled = true;    return list;} /// <summary>/// 查找分页数据列表/// </summary>/// <param name="pageNumber">当前页</param>/// <param name="pageSize">每页记录数</param>/// <param name="totalRecord">总记录数</param>/// <param name="sortOrder">是否升序</param>/// <param name="sortName">排序字段名称</param>/// <returns>实例列表</returns>public IQueryable<T> GetPageData<TS>(string sortName, string sortOrder, int pageNumber, int pageSize, out int totalRecord){    _nContext.Configuration.LazyLoadingEnabled = false;    _nContext.Configuration.ProxyCreationEnabled = false;    var list = GetList();    totalRecord = list.Count();    list = OrderBy(list, sortName, sortOrder == "asc").Skip(pageNumber * pageSize).Take(pageSize);    _nContext.Configuration.LazyLoadingEnabled = true;    _nContext.Configuration.ProxyCreationEnabled = true;    return list;}
/// <summary>/// 排序/// </summary>/// <typeparam name="T">类型</typeparam>/// <param name="source">原IQueryable</param>/// <param name="propertyName">排序属性名</param>/// <param name="isAsc">是否正序</param>/// <returns>排序后的IQueryable<T/></returns>private static IQueryable<T> OrderBy(IQueryable<T> source, string propertyName, bool isAsc){    if (source == nullthrow new ArgumentNullException("source""不能为空");     if (string.IsNullOrEmpty(propertyName)) return source;     //Expression:提供一种基类,表示表达式目录树节点的类派生自该基类。    //创建一个 ParameterExpression 节点,该节点可用于标识表达式树中的参数或变量。    var parameter = Expression.Parameter(source.ElementType);    //创建一个表示访问属性的 MemberExpression    var property = Expression.Property(parameter, propertyName);    if (property == nullthrow new ArgumentNullException("propertyName""属性不存在");     var lambdaExpression = Expression.Lambda(property, parameter);    var methodName = isAsc ? "OrderBy" : "OrderByDescending";    var resultExpression = Expression.Call(typeof(Queryable), methodName, new[] { source.ElementType, property.Type }, source.Expression, Expression.Quote(lambdaExpression));    return source.Provider.CreateQuery<T>(resultExpression);}

0 0
原创粉丝点击