JS DataTables 这个组件绑定数据必须要有自己的返回数据格式。但是ABP返回的格式直接绑定是错误。重写ABP返回格式符合DataTables 要求 。
/// <summary> /// 构造函数 /// </summary> /// <param name="draw">请求次数计数器</param> /// <param name="recordsTotal">总共记录数</param> /// <param name="recordsFiltered">过滤后的记录数</param> /// <param name="data">数据</param> /// <param name="error">服务器错误信息</param> public JsonResult DataTablesResult<TEntity>( int draw, int recordsTotal, int recordsFiltered, IReadOnlyList<TEntity> data, string error = null, JsonRequestBehavior behavior = JsonRequestBehavior.DenyGet) { var result = new DataTablesResult<TEntity>(draw, recordsTotal, recordsFiltered, data); return DataTableJson(result, null, Encoding.UTF8, behavior); } public virtual JsonResult DataTableJson( object data, string contentType = null, Encoding contentEncoding = null, JsonRequestBehavior behavior = JsonRequestBehavior.DenyGet) { return new JsonResult() { Data = data, ContentType = contentType, ContentEncoding = contentEncoding, JsonRequestBehavior = behavior }; }
public class DataTablesParameters { /// <summary> /// 请求次数计数器 /// </summary> public int Draw { get; set; } /// <summary> /// 第一条数据的起始位置 /// </summary> public int Start { get; set; } /// <summary> /// 每页显示的数据条数 /// </summary> public int Length { get; set; } /// <summary> /// 数据列 /// </summary> public List<DataTablesColumns> Columns { get; set; } /// <summary> /// 排序 /// </summary> public List<DataTablesOrder> Order { get; set; } /// <summary> /// 搜索 /// </summary> public DataTablesSearch Search { get; set; } /// <summary> /// 排序字段 /// </summary> public string OrderBy { get { return Columns != null && Columns.Any() && Order != null && Order.Any() ? Columns[Order[0].Column].Data : string.Empty; } } /// <summary> /// 排序模式 /// </summary> public DataTablesOrderDir OrderDir { get { return Order != null && Order.Any() ? Order[0].Dir : DataTablesOrderDir.Desc; } } }