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 ...
随机推荐
- chrome浏览器root用户运行
vim /usr/bin/google-chrome 58 exec -a "$0" "$HERE/chrome" "$PROFILE_DIRECTO ...
- Arc Engine下数据的加载处理
1.加载Shapefile数据 IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspace; IFeatureLa ...
- 【转载】CentOS6.5_X64下安装配置MongoDB数据库
[转载]CentOS6.5_X64下安装配置MongoDB数据库 2014-05-16 10:07:09| 分类: 默认分类|举报|字号 订阅 下载LOFTER客户端 本文转载自zhm&l ...
- 手机浏览器,微信中播放amr录音
由于微信公众号开发中,临时素材只有三天的有效期,但是客户要求所有录音永久保存,永久素材数量又有限制,故只能把录音保存到服务器上.但是存到服务器上有一个问题,手机微信中无法直接播放amr录音.无意中发现 ...
- mysql5.7 代价模型浅析
代价模型 mysql 5.7.10代价计算相对之前的版本有5.7 代价模型浅析较大的改进.例如 代价模型参数可以动态配置,可以适应不同的硬件 区分考虑数据在内存和在磁盘中的代价 代价精度提升为浮点型 ...
- 微信公共平台开发-(.net实现)3--发送文本消息
最近,项目这边比较忙,没来得及续写,哎,先吐吐槽吧,在这个周六还得来上班,以后每个周六多要上,一天的滋味真有点受不鸟呀.还不习惯ing... 嗯,别的不说了现在开始接着上次http://www.cnb ...
- mongodb(mongoose-redis-cache)
在传统的项目中,我们经常会用到缓存来优化数据库的读取,比如java中,我们利用spring的AOP能力,在读写数据库前增加对缓存的操作. 在node与mongodb的项目中也仍然会存在类似问题,本文参 ...
- mongodb(回滚)
事实上mongodb是不支持事务的,个人理解原因如下:1.避免大量对document加锁,从而影响性能,2.非关系型的数据库,从设计上就应能尽可能的比较关联复杂的多document,一个数据应能记录在 ...
- Web前端技术研究:Css hack技术---令人沮丧的技术
我最近想好好整理下csshack技术,但是结果很沮丧,下面我将我最初写的笔记和大家分享下. 我在单位整理的研究笔记: 不同的浏览器对某些CSS代码解析会存在一定的差异,因此就会导致不同浏览器下给用户展 ...
- JavaScript思维导图—数组
JavaScript思维导图-来自@王子墨http://julying.com/blog/the-features-of-javascript-language-summary-maps/