ASP.NET MVC 5 ABP DataTables (一)
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[].Column].Data
: string.Empty;
}
} /// <summary>
/// 排序模式
/// </summary>
public DataTablesOrderDir OrderDir
{
get
{
return Order != null && Order.Any()
? Order[].Dir
: DataTablesOrderDir.Desc;
}
}
}
DataTablesParameters
public class DataTablesResult<TEntity>
{ /// <summary>
/// 构造函数
/// </summary>
/// <param name="draw0">请求次数计数器</param>
/// <param name="recordsTotal0">总共记录数</param>
/// <param name="recordsFiltered0">过滤后的记录数</param>
/// <param name="data0">数据</param>
public DataTablesResult(int draw0, int recordsTotal0, int recordsFiltered0, IReadOnlyList<TEntity> data0)
{
draw = draw0;
recordsTotal = recordsTotal0;
recordsFiltered = recordsFiltered0;
data = data0;
} /// <summary>
/// 构造函数
/// </summary>
/// <param name="error0">服务器错误信息</param>
public DataTablesResult(string error0)
{
error = error0;
} /// <summary>
/// 请求次数计数器
/// </summary>
public int draw { get; set; } /// <summary>
/// 总共记录数
/// </summary>
public int recordsTotal { get; set; } /// <summary>
/// 过滤后的记录数
/// </summary>
public int recordsFiltered { get; set; } /// <summary>
/// 数据
/// </summary>
public IReadOnlyList<TEntity> data { get; set; } /// <summary>
/// 错误信息
/// </summary>
public string error { get; set; }
}
DataTablesResult
/* dataTables列内容居中 */
.table { width: 100% !important;}
.table > tbody > tr > td {overflow: hidden; text-overflow: ellipsis;}
.table > thead > tr > th {text-align: center;}
.table > tbody > tr > td {text-align: center;}
/* dataTables表头居中 */
.dataTables_scrollHead, .dataTables_scrollBody { border-bottom: 0px !important;}
.dataTables_scrollHeadInner, #InspectionRecordTable {border-bottom: 1px solid #e7ecf1 !important;margin: 0 !important;}
.scrolltable {height: 350px;overflow-x: hidden;overflow-y: auto;width: 100%;}
CSS
var table = $('#MI_InspectionPlanTable');
table.dataTable({
// Internationalisation. For more info refer to http://datatables.net/manual/i18n
"language": {
"url": '/Scripts/datatables/DataTable_language.json'
},
"bStateSave": true, //是否打开客户端状态记录功能,此功能在ajax刷新纪录的时候不会将个性化设定回复为初始化状态
"sScrollX": "100%", //DataTables的宽
"aLengthMenu": [10, 20, 60], //更改显示记录数选项
"iDisplayLength": 10, //默认显示的记录数
"bAutoWidth": true, //是否自适应宽度
"bPaginate": true, //是否显示(应用)分页器
"bInfo": false, //是否显示页脚信息,DataTables插件左下角显示记录数
"sPaginationType": "full_numbers", //详细分页组,可以支持直接跳转到某页
"bSort": false, //是否启动各个字段的排序功能
"ordering": false,
"bFilter": false, //是否启动过滤、搜索功能
"bProcessing": false, //DataTables载入数据时,是否显示‘进度’提示
//当前这个进度显示有问题 需要调整
"serverSide": true,//true代表后台处理分页,false代表前台处理分页
"dom": "<f<t>ip>",
"ajax": {
"url": "/main/InspectionPlan/GetMI_InspectionPlanAll",
"type": "post",
"data": function (d) {
d.ModelType = 0;
d.FileType = fileType;
},
"error": handleAjaxError() },
"columnDefs":
[ {
"targets": 0,
"render": function (data, type, meta) {
return '<input type="checkbox" class="checkboxes" name="selected" value="' + meta.Id + '" id="checkbox" />';
},
"bSortable": false
}
],
"columns": [
{
"sWidth": "30px"
},
{ "data": "FileName", "bSortable": false },
{ "data": "FileSize", "bSortable": false },
{ "data": "Remarks", "bSortable": false },
{ "data": "CreateTime", "bSortable": false },
{
"sDefaultContent": '<div class="input-group-btn">\
<button type="button" class="btn green-sharp Edit" title="编辑">\
<i class="fa fa-edit"></i>\
</button><span style="margin-left: 5px;"></span> \
<button type="button" class="btn blue-steel Delete" title="删除">\
<i class="fa fa-trash-o"></i>\
</button>\
</div>',
"sWidth": "100px",
"bSortable": false
}
]
});
JS
{
"sProcessing": "正在加载数据...",
"sLengthMenu": "显示_MENU_条 ",
"sZeroRecords": "没有您要搜索的内容",
"sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",
"sInfoEmpty": "显示第 0 至 0 项结果,共 0 项",
"sInfoFiltered": "(全部记录数 _MAX_ 条)",
"sEmptyTable": "<div style='margin:0 auto;text-align:center;'>没有数据</div>",
"sInfoPostFix": "",
"sLoadingRecords": "载入中...",
"sSearch": "搜索",
"sUrl": "",
"oPaginate": {
"sFirst": "首页",
"sPrevious": "上页 ",
"sNext": " 下页 ",
"sLast": "尾页 "
},
"oAria": {
"sSortAscending": "以升序排列此列",
"sSortDescending": "以降序排列此列"
}
}
DataTables 汉化
ASP.NET MVC 5 ABP DataTables (一)的更多相关文章
- ASP.NET MVC 5 ABP DataTables (二)
1)ABP DataTables 应用(一) 2) ABP DataTables 应用(二) JS DataTables 这个组件绑定数据必须要有自己的返回数据格式.但是ABP返回的格式直接绑定是错 ...
- 基于ASP.NET MVC的ABP框架入门学习教程
为什么使用ABP 我们近几年陆续开发了一些Web应用和桌面应用,需求或简单或复杂,实现或优雅或丑陋.一个基本的事实是:我们只是积累了一些经验或提高了对,NET的熟悉程度. 随着软件开发经验的不断增加, ...
- Datatables 在asp.net mvc中的使用
前言 最近使用ABP(ASP.NET Boilerplate)做新项目,以前都是自己扩展一个HtmlHelper来完成同步/异步分页,但是有个地方一直不满意,排序太费劲. 以前接触过一点点的Datat ...
- Datatables 在asp.net mvc
Datatables 在asp.net mvc中的使用 前言 最近使用ABP(ASP.NET Boilerplate)做新项目,以前都是自己扩展一个HtmlHelper来完成同步/异步分页,但是有个地 ...
- [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序
本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...
- ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项
引言: 本人想自己个博客网站出来,技术路线是用ASN.NET MVC5+EF6(Code First)+ZUI+各种Jquery插件,有了这个想法之后就开始选择UI,看了好多bootstrap的模板之 ...
- jQuery DataTables and ASP.NET MVC Integration
part 1 : http://www.codeproject.com/Articles/155422/jQuery-DataTables-and-ASP-NET-MVC-Integration-Pa ...
- ABP 教程文档 1-1 手把手引进门之 AngularJs, ASP.NET MVC, Web API 和 EntityFramework(官方教程翻译版 版本3.2.5)含学习资料
本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 转载请注明出处:http://www.cnblogs.com/yabu007/ 谢谢 官方文档分四部分 一. 教程文档 二.ABP 框架 三. ...
- ABP示例程序-使用AngularJs,ASP.NET MVC,Web API和EntityFramework创建N层的单页面Web应用
本片文章翻译自ABP在CodeProject上的一个简单示例程序,网站上的程序是用ABP之前的版本创建的,模板创建界面及工程文档有所改变,本文基于最新的模板创建.通过这个简单的示例可以对ABP有个更深 ...
随机推荐
- hihoCoder #1082 : 然而沼跃鱼早就看穿了一切(字符串处理)
#1082 : 然而沼跃鱼早就看穿了一切 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句 ...
- Web Component总结
Web Component 一个Web组件通常由四个部分组成:模板.Shadow DOM.自定义元素与打包,其中Shadow DOM解决了组件在页面中的封装问题 Shadow DOM 有shadow ...
- 详解String类中的intern()方法
我们用一个经典的例子来理解 package com.jvm.heap; public class MyTest { public static void main(String[] args) { S ...
- vuex的使用
vue现在越来越火,不单单可以写简单的小项目,也可以写大中型的项目.但是项目大了,项目之间的数据传递就会变得复杂,那么问题来了?在一个大型项目中,多个组件要公用同一个或多个数据,我们如何保证每个组件获 ...
- 解决不同操作系统下git换行符一致性问题
一.不同操系统下的换行符CR回车 LF换行Windows/Dos CRLF \r\nLinux/Unix LF \nMacOS CR \r二.解决方法 打卡git bash,设置core.autocr ...
- union 时只能查出一个表中的信息,另一个表只能查出字段
原因:news表中title字段的编码,与brand表中的编码不一致导致 y
- struts异常:No result defined for action
问题描述: No result defined for action com.freedom.funitureCityPSIMS.controller.login.CheckAction and re ...
- Redis-配置认证密码
1.找到redis.conf,配置密码 2.要重新启动一下redis 3.用redis-cli重新登陆,我们查询的时候提示"Authentication required"查询失败 ...
- [转]同一台Windows机器中启动多个Memcached服务
Memcached的安装后,如果手头上只有一台机器,又想做多节点测试咋办? 这就需要在一台机器上启动多个Memcached服务了. 假设Memcached在如下目录:C:\memcached\memc ...
- Log4j源码解析--Layout类解析
本文转载上善若水的博客,原文出处:http://www.blogjava.net/DLevin/archive/2012/07/04/382131.html.感谢作者的分享. Layout负责将Log ...