标签:
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> ‘ + ‘<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 == null) throw 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 == null) throw 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); }
标签:
原文地址:http://blog.csdn.net/yanggenxiang/article/details/51361812