BootStrap-Table 分页

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 + '" οnclick="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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值