JQuery Datatables服务器端处理示例
HTML
<table class="table table-striped table-bordered table-hover" id="table_report"><thead><tr role="row"><th class="table-checkbox">选择</th><th>图片</th><th>商品名称</th><th>商品编码</th><th>商品类型</th><th>价格</th><th>会员价格</th></tr></thead><tbody></tbody><tfoot><tr role="row"><th class="table-checkbox"><input type="checkbox" class="group-checkable" data-set="#table_report .checkboxes" /></th><th>图片</th><th>商品名称</th><th>商品编码</th><th>商品类型</th><th>价格</th><th>会员价格</th></tr></tfoot></table>
<script type="text/javascript">$(function () {var table = $('#table_report');var oTable = table.dataTable({"processing": true,"serverSide": true,//"stateSave": true, // save datatable state(pagination, sort, etc) in cookie."pagingType": "bootstrap_full_number","language": {"aria": {"sortAscending": ": 以升序排列此列","sortDescending": ": 以降序排列此列"},"loadingRecords": "数据载入中...","emptyTable": "表中数据为空","info": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项","infoEmpty": "无数据","infoFiltered": "(由 _MAX_ 项过滤得到)","infoPostFix": "","infoThousands": ",","lengthMenu": "显示 _MENU_ 项结果","search": "搜索:","zeroRecords": "没有匹配结果","paging": {"first": "首页","previous": "上页","next": "下页","last": "末页"},"paginate": {"previous": "上一页","next": "下一页","last": "尾页","first": "首页"}},"ajax": {url: "/DiscountInfo/DiscountGoodList/" + $("#GoodId").val(),contentType: "application/json",type: "POST",data: function (d) {var x = JSON.stringify(d);//console.log(x);return x;},},"columns": [{"data": "Id", "render": function (data, type, full, meta) {return '<input type="checkbox" class="checkboxes" value="' + data + '"/>';}},{ "data": "ImgPath", "name": "图片", "orderable": false ,"render": function (data, type, full, meta) {return '<img src="' + data + '" height="48" width="48" onerror="errorProImg(this)"></img>';}},{ "data": "ProName", "name": "商品名称", "orderable": true },{ "data": "ProNumber", "name": "商品编码", "orderable": true },{ "data": "CategoryTypeName", "name": "商品类型", "orderable": true },{ "data": "OrdinaryPrice", "name": "价格", "orderable": true },{ "data": "VipPrice", "name": "会员价格", "orderable": true }],"rowCallback": function (row, data) {$(row).find("input").uniform();if (data.Selected) {$(row).addClass('active').find("input").attr("checked", true);} else { }$.uniform.update();},"lengthMenu": [[20, 50, 100],[20, 50, 100] // change per page values here],// set the initial value"pageLength": 20,//"columnDefs": [{ // set default column settings// 'targets': [0],// "searchable": false,// 'orderable': false//}],"order": [[0, "desc"]// set first column as a default sort by asc]});//单项操作table.on('change', 'tbody tr .checkboxes', function () {var checked = $(this).is(":checked");if (checked) {$(this).parents('tr').addClass("active");$.post("/DiscountInfo/UpdateDiscountGoodList", { GoodId: $(this).val(), DiscountId: $("#GoodId").val(), "Selected": true }, function () { });} else {$(this).parents('tr').removeClass("active");$.post("/DiscountInfo/UpdateDiscountGoodList", { GoodId: $(this).val(), DiscountId: $("#GoodId").val(), "Selected": false }, function () { });}});//多项操作table.find('.group-checkable').on("change", function () {var set = $(this).attr("data-set");var checked = $(this).is(":checked");var list = [];$(set).each(function () {if (checked) {$(this).attr("checked", true);$(this).parents('tr').addClass("active");list.push({ GoodId: $(this).val(), DiscountId: $("#GoodId").val(), "Selected": true });} else {$(this).attr("checked", false);$(this).parents('tr').removeClass("active");list.push({ GoodId: $(this).val(), DiscountId: $("#GoodId").val(), "Selected": false });}});$.uniform.update(set);$.post("/DiscountInfo/UpdateDiscountGoodLists", { "list": list }, function () { });});});</script>
[HttpPost]public JsonResult DiscountGoodList(Guid id,datatables table){int total = 0;var goods = productsService.GetList();var dGoods = discountgoodsService.GetList().Where(c => c.Deleted == false && c.RuleId == id);var query = from g in goodsjoin t in categoryTypeServic.GetList() on g.CategoryTypeId equals t.Idjoin dg in dGoods on g.Id equals dg.GoodsId into joinDGfrom dept in joinDG.DefaultIfEmpty()select new GoodListItemViewModel{Id = g.Id,ImgPath = g.ImgPath,ProName = g.ProName,ProNumber = g.ProNumber,VipPrice = g.VipPrice,OrdinaryPrice = g.OrdinaryPrice,CategoryTypeId = g.CategoryTypeId,Selected = dept == null ? false : true,CategoryTypeName = t.TypeName};//数据总数(未过滤)total = query.Count();//搜索过滤if (string.IsNullOrWhiteSpace(table.search.value) == false){query = query.Where(c=>c.ProName.Contains(table.search.value) || c.ProNumber.Contains(table.search.value) || c.CategoryTypeName.Contains(table.search.value));}#region 排序query = query.OrderBy(c => c.Id);foreach (var item in table.order){if (item.dir == "asc"){switch (item.column){case 0:query = query.OrderBy(c => c.Selected);break;case 2:query = query.OrderBy(c => c.ProName);break;case 3:query = query.OrderBy(c => c.ProNumber);break;case 4:query = query.OrderBy(c => c.CategoryTypeName);break;case 5:query = query.OrderBy(c => c.OrdinaryPrice);break;case 6:query = query.OrderBy(c => c.VipPrice);break;default:query = query.OrderBy(c => c.Selected);break;}}else {switch (item.column){case 0:query = query.OrderByDescending(c => c.Selected);break;case 2:query = query.OrderByDescending(c => c.ProName);break;case 3:query = query.OrderByDescending(c => c.ProNumber);break;case 4:query = query.OrderByDescending(c => c.CategoryTypeName);break;case 5:query = query.OrderByDescending(c => c.ProName);break;case 6:query = query.OrderByDescending(c => c.ProNumber);break;default:query = query.OrderByDescending(c => c.Selected);break;}}}#endregionDatatablesResult<GoodListItemViewModel> jsModel = new DatatablesResult<GoodListItemViewModel>(query, table.start, table.length, table.draw, total);return Json(jsModel);}public class datatables{public datatables(){this.columns = new List<datatables_column>();this.order = new List<datatables_order>();}public int draw { get; set; }public List<datatables_column> columns { get; set; }/// <summary>/// 排序/// </summary>public List<datatables_order> order { get; set; }/// <summary>/// 数据开始位置,从0开始/// </summary>public int start { get; set; }/// <summary>/// 分页大小,-1代表不分页全部返回/// </summary>public int length { get; set; }/// <summary>/// 全局的搜索条件/// </summary>public datatables_search search { get; set; }}public class datatables_column{public int data { get; set; }public string name { get; set; }public bool searchable { get; set; }public bool orderable { get; set; }public datatables_search search { get; set; }}public class datatables_search{public string value { get; set; }public string regex { get; set; }}public class datatables_order{public int column { get; set; }public string dir { get; set; }}public class DatatablesResult<T>{public DatatablesResult(IQueryable<T> source, int start, int length, int draw, int recordsTotal){this.draw = draw;this.recordsTotal = recordsTotal;this.recordsFiltered = source.Count();this.data = source.Skip(start).Take(length).ToList();}public DatatablesResult(IList<T> source, int start, int length, int draw, int recordsTotal){this.draw = draw;this.recordsTotal = recordsTotal;this.recordsFiltered = source.Count();this.data = source.Skip(start).Take(length).ToList();}public DatatablesResult(IEnumerable<T> source, int start, int length, int draw, int recordsTotal){this.draw = draw;this.recordsTotal = recordsTotal;this.recordsFiltered = source.Count();this.data = source.Skip(start).Take(length).ToList();}public DatatablesResult(IEnumerable<T> source, int recordsFiltered, int draw, int recordsTotal){this.draw = draw;this.recordsTotal = recordsTotal;this.recordsFiltered = recordsFiltered;this.data = source.ToList();}public int draw { get; /*private*/ set; }public int recordsTotal { get; /*private*/ set; }public int recordsFiltered { get; /*private*/ set; }public IList<T> data { get; /*private*/ set; }}

JQuery Datatables服务器端处理示例的更多相关文章
- Jquery DataTables相关示例
一.Jquery-DataTables DataTables 是jquery的一个开源的插件.它具有高度灵活的特性,基于渐进增强的基础,可以为任何表格添加交互.它特性如下: 提供分页,搜索和多列排序: ...
- [jQuery]jQuery DataTables插件自定义Ajax分页实现
前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...
- jquery.datatables中文使用说明
http://www.cnblogs.com/taizhouxiaoba/archive/2009/03/17/1414426.html 本文共四部分:官网 | 基本使用|遇到的问题|属性表 一:官方 ...
- jQuery datatables
jQuery datatables 属性,用例 参考:http://datatables.club/example/ http://blog.csdn.net/mickey_miki/article/ ...
- datatables插件适用示例
本文共四部分:官网 | 基本使用|遇到的问题|属性表 一:官方网站:[http://www.datatables.NET/] 二:基本使用:[http://www.guoxk.com/node/jQu ...
- jQuery dataTables四种数据来源[转]
2019独角兽企业重金招聘Python工程师标准>>> 四种数据来源 对于 dataTables 来说,支持四种表格数据来源. 最为基本的就是来源于网页,网页被浏览器解析为 DOM ...
- ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项
引言: 本人想自己个博客网站出来,技术路线是用ASN.NET MVC5+EF6(Code First)+ZUI+各种Jquery插件,有了这个想法之后就开始选择UI,看了好多bootstrap的模板之 ...
- jQuery DataTables && Django serializer
jQuery DataTables https://www.datatables.net 本文参考的官方示例 http://datatables.net/release-datatables/exam ...
- jquery datatables api (转)
学习可参考:http://www.guoxk.com/node/jquery-datatables http://yuemeiqing2008-163-com.iteye.com/blog/20069 ...
随机推荐
- [转]Android开发:Parallax效果的ScrollerView,改编自ParallaxListView
https://github.com/nirhart/ParallaxScroll这个gethub上的地址 本文转自http://www.2cto.com/kf/201502/376970.html ...
- border-width和border其它属性配合实现的小三角形标签效果
如图,附上css代码 { width: 0; border-width: 30px 0px 72px 164px; border-style:solid; border-color:red; bord ...
- 运维自动化工具---Puppet
案例环境:-----------------------------------------------------------------主机 操作系统 IP地址 主要软件--------- ...
- C++ 非阻塞套接字的使用 (1)
在维护代码的过程中,发现软件运行的CPU占用率居高不下,在4核的电脑上占用了25%的CPU.查阅资料的得知,这是可能是由于软件中出现了死循环. 经过对软件的一些测试,最终确定了死循环出现的位置——通讯 ...
- 修改mysql某一键为自增键
alter table tb_name modify id int auto_increment primary key
- halcon读取一张照片,并转化为灰度图像
dev_close_window () read_image (Image, 'E:/图片/123.jpg') get_image_size (Image, Width, Height) dev_op ...
- cocos2d-x 2.2.2 android平台移植
1.完成以上工具的下载安装--cocos2d-x 2.2.2 --eclipse+adt+sdk --ndk 2.创建cocos2d-x工程 在"cocos2d-x-2.2.2\tools\ ...
- spark on centos6.5 安装
第一步在centos 6.5上安装java 运行环境 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-18 ...
- SQL入门经典(四)之创建和修改数据表
本章主要讲如何使用脚本创建数据库:如何使用脚本创建表:如何删除对象和修改对象. CREATE 语句:CREATE <object type> <onject name> 创建数 ...
- dojo/dom-style样式操作学习笔记
基础总结 一个元素的样式信息由三个来源根据层叠规则确定.三个来源分别是: 由DOM元素style特性设置的内联样式 由style元素中嵌入的样式规则 由link元素引入的外部样式表 元素的样式 任何支 ...