bootstrap datatable项目封装
(function($) { $.fn.formJSON = function() { var serializeObj = {}; var array = this.serializeArray(); var str = this.serialize(); $(array).each( function() { if (serializeObj[this.name]) { if ($.isArray(serializeObj[this.name])) { serializeObj[this.name].push(this.value); } else { serializeObj[this.name] = [ serializeObj[this.name], this.value ]; } } else { serializeObj[this.name] = this.value; } }); return serializeObj; };})(jQuery);function isEmpty(str) { return (str == null || $.trim(str).length == 0);}/** * 调用dataTables分页查询 * * @param options * 此参数是个对象 此对象的 table,action 属性为必须属性 query为查询条件包裹元素id,即父元素id */function query_dataTable(options) { var data_table_object; // options参数说明 function 有complete 查询完成后会调用的事件 // load 替换现有在加载函数 调用自己的加载函数来加载datatable数据 调用load函数会传递 这个4个参数url, queryParam, // callback, oSettings // success 在表格数据成功加载后需要调用的function 会传递json数据 即后台返回的数据包 // table对象中 data-options 设置每个对象即一列 里面的参数包括 Class title visible width out // render 四个属性 Class自定义样式 title标题 visible是否显示列 width 自定义每列宽度 默认平均分配宽度 // out 自定义此列输出内容 返回字符串 会传递2个参数 当前值 跟当前行的所有列对象数据 // render 跟out函数用法差不多 此函数覆盖原来的输出列函数 自定义列输出 三个参数 当前行数据 当前列数据 oSettings对象 // hidden_title 是否隐藏表头 默认显示 // selected 是否显示选择列 // selectType 单选或多选 默认多选 // selectCall 选择框change时的触发事件调用函数 传递当前选中的内容json数组格式 // 可以调selectedAll()函数获取当前选中的内容json数组 var url = options.url ? options.url : "自定义默认url"; var table = options.table;// 显示列表数据 table var query = options.query ? options.query : "#queryParam";// 查询条件包裹元素id var table_class = $(table).attr("class"); // 是否自定义样式 var hidden_title = options.hidden_title ? options.hidden_title : null;// 是否隐藏表头 var complete = function() {// 加载完成调用事件 if (options.complete) options.complete(); } var columns = []; if (isEmpty(table_class)) { $(table).removeClass("table table-striped table-hover table-bordered"); $(table).addClass("table table-striped table-hover table-bordered"); } var data_options = $(table).attr("data-column");// 表头的自定义列属性 var bSort = options.sort ? options.sort : false;// 自定义表格否排序 true false data_options = JSON.parse(data_options); var selectedType = options.selectType ? options.selectType : "checkbox";// 选择类型单选或多选 // checkbox // radio var dis = (selectedType == "radio") ? "disabled" : ""; if (options.selected) {// 是否显示复选框默认不显示 columns.push({ "mDataProp" : "", "sTitle" : "<input title='全选/反选' type='" + selectedType + "' " + dis + " name='bootstarp_data_table_checkbox'>", "sClass" : "left selected", "bVisible" : true, "sWidth" : "2%", "bSortable" : false, "fnRender" : function() { return "<input title='选择' type='" + selectedType + "' name='bootstarp_data_table_checkbox'>"; } }); } var displayLen = data_options.length;// 获取显示列数量 $.each(data_options, function() { var visible = this["visible"]; if (visible) displayLen--; }); $.each(data_options, function(index, td) {// 初始化列数据 var sClass = td.Class ? td.Class : "center";// 居中 var sTitle = td.title ? td.title : "";// 标题 var bVisible = td["visible"] ? false : true;// 是否隐藏 var sWidth = td.width ? td.width : (100 / displayLen) + "%";// 不设置宽度默认 var bSortable = td.sort ? td.sort : bSort;// 自定义列是否排序 true false // 平均分配 var column = { "mDataProp" : td.name, "sTitle" : sTitle, "sClass" : sClass, "bVisible" : bVisible, "sWidth" : sWidth, "bSortable" : bSortable }; if (td.out) { column["fnRender"] = function(row, key) {// 编辑列需要执行的自定义函数输出内容 // 此函数会接收两个参数 (第一个是此列的值 // 第二个是当前行所有内容) return td.out(key, row.aData);// key 为当前列数据 // row.aData为当前行数据 } } if (td.render) {// 覆盖原有的编辑列自定义输出内容函数 此函数有三个参数 oSettings 对象 // row对象 col列对象 column["fnRender"] = td.render; } columns.push(column); }); function success(json) { // to code } var successFunc = options.success ? options.success : success; // 3个参数的名字可以随便命名,但必须是3个参数,少一个都不行 function datatable_callback(url, queryParam, callback, oSettings) { queryParam = $(query).formJSON();// 查询条件 queryParam["PAGE_INFO.currentPage"] = oSettings._iDisplayStart;// 当前页 $.ajax({ type : 'POST', dataType : 'json', cache : false, url : url,// 这个就是请求地址对应sAjaxSource data : queryParam, // 这个是把datatable的一些基本数据传给后台,比如起始位置,每页显示的行数 success : function(json) { json["sEcho"] = oSettings._sEcho | oSettings.iDraw; if (options.success) options.success(json); callback(json);// 把返回的数据传给这个方法就可以了,datatable会自动绑定数据的 }, error:function(e){ //alert("对不起数据加载失败!"); } }); } var data_table_load = options.load ? options.load : datatable_callback; data_table_object = $(table).dataTable({ "bFilter" : false,// 去掉搜索框 "bAutoWidth" : false, // 自适应宽度 "sPaginationType" : "bootstrap", "bLengthChange" : false, "bDestroy" : true, "bProcessing" : false, "sAjaxSource" : url, "fnServerData" : data_table_load, // 获取数据的处理函数 "bServerSide" : false,// 是否每次请求新数据 "bSort" : bSort,// 是否使用排序 "aoColumns" : columns, "fnInitComplete" : complete, "oLanguage" : { "sProcessing" : "数据获取中...", "sLengthMenu" : "_MENU_ 记录/页", "sZeroRecords" : "没有匹配的记录", "sInfo" : "显示第 _START_ 至 _END_ 条记录,共 _TOTAL_ 条", "sInfoEmpty" : "显示第 0 至 0 条记录,共 0条", "sInfoFiltered" : "(由 _MAX_ 条记录过滤)", "sInfoPostFix" : "", "oPaginate" : { "sFirst" : "首页", "sPrevious" : "上页", "sNext" : "下页", "sLast" : "末页" } } }); if (options.selected) {// 显示选择框 $('tbody', $(table)) .on( 'click', 'td', function() { if ($(this) .find( ":input[name='bootstarp_data_table_checkbox']").length < 1) { var box = $(this) .parent() .find( ":input[name='bootstarp_data_table_checkbox']"); box.prop("checked", !box.is(":checked")); } if (options.selectCall) {// 选择框点击时触发selectCall函数 var selecteds = data_table_object.selectedAll(); options.selectCall(selecteds); } }); $('thead', $(table)).find( ":input[name='bootstarp_data_table_checkbox']").on( "click", function() { $('tbody', $(table)).find( ":input[name='bootstarp_data_table_checkbox']") .prop("checked", $(this).is(":checked")); if (options.selectCall) {// 选择框点击时触发selectCall函数 var selecteds = data_table_object.selectedAll(); options.selectCall(selecteds); } }); // 获取datatable选中行的所有数据 data_table_object.selectedAll = function() { var selected = []; $.each(this.fnGetNodes(), function() { var rows = this; var checked = $(this).find( ":input[name='bootstarp_data_table_checkbox']").is( ":checked"); if (checked) selected.push(data_table_object.fnGetData(rows)); }); return selected; }; } $(table).prev().hide(); if (hidden_title) { $(table).find("tr:eq(0)").hide(); } return data_table_object;}bootstrap datatable项目封装的更多相关文章
- bootstrap datatable项目封装支持单选多选
自己在开发项目是根据自己的项目后台框架封装的jquery datatable插件基本上能集成到任何项目中使用,当然封装的还不够完美,给大家学习 调侃 使用介绍:query_dataTable({tab ...
- 利用表格分页显示数据的js组件bootstrap datatable的使用
前面展示了datatable的简单使用,还可以通过bootstrap结合datatable来使用,这样可以进一步美化datatable插件 <!DOCTYPE html> <html ...
- bootstrap入门项目备份
bootstrap入门项目备份 http://files.cnblogs.com/files/wordblog/bootstrap%E5%85%A5%E9%97%A8%E9%A1%B9%E7%9B%A ...
- VUE+ELEMENT-UI的后台项目封装组件--查询form的封装
最近项目打算重构,项目的模块几乎都是以后台查询展示的传统的增删改差模式,所以卑微的我想要自己封装一下查询form,先上效果图 子组件页面: <template> <div class ...
- asp.net mvc bootstrap datatable 服务端分页 更新槽糕的代码【1】
datatable 服务端分页 因项目需求变动,需处理大量数据,更改成服务端分页,自己两天的学习笔记 datatable 1.10.7 百度云下载 密码:0ea1 先上图[ jqueryui风格] ...
- asp.net mvc bootstrap datatable 服务端分页
datatable 服务端分页 因项目需求变动,需处理大量数据,更改成服务端分页,自己两天的学习笔记 先上图[ jqueryui风格] 前端代码: @{ Layout = null;} <!DO ...
- bootstrap DataTable绑定数据带服务器分页
<!-- DataTables --> 这两个文件在我的文件夹里面<script src="~/bower_components/datatables.net/js/jq ...
- 麦子学院bootstrap实战项目官网,后台,jquery.singlePageNav.min.js ,wow.min.js,animate.css使用
1.源码笔记 我的源码+笔记(很重要):链接: https://pan.baidu.com/s/1eSxgLV0 密码: 2pi2 感谢麦子学院项目相关视频:链接: https://pan.baidu ...
- bootstrap datatable 数据刷新问题
在项目中,页面初始化的时候,通过通过向后台请求数据,页面初始化完之后,datatable是有数据的,当我点击页面的搜索按钮(按照时间过滤数据),datatable的数据要能重新刷新或者重载:这一点,我 ...
随机推荐
- 我的家乡:三河古镇已经登上央视CCTV-1新闻联播啦!
在烟雨朦胧时走在古镇的青石街上,别有一番风味!第一幅图为央视的直播车,第二副图为漂亮的三河夜景色!
- 在线生成32位和16位大小写MD5密文
MD5是一种不可逆的加密算法,全称是Message-Digest Algorithm 5(信息-摘要算法).是当前计算机领域用于确保信息传输完整一致而广泛使用的散列算法之一. MD5的典型应用是对一段 ...
- oracle的日期蛋
一切都是扯鸡巴蛋. 在网上查oracle的日期函数用法,得到一大堆语法,林林总总,都是扯鸡巴蛋,没能解决我的问题. 其实,我想写这么一条语句:查找某个日期(不含时分秒)产生或有关的记录.咋写? SQL ...
- C 项目案例实践(1)数据结构之链表(0)
链表是通过一组任意的存储单元来存储线性表中的数据元素的,那么怎样表示出数据元素之间的线性关系呢?为建立数据元素之间的线性关系,对每个数据元素ai,除了存放数据元素的自身信息ai之外,还需要存放和ai一 ...
- 如何获取板子上独有的ID号EXYNOS4412/Imx6ul【转】
本文转载自:http://blog.csdn.net/u010871058/article/details/75637175 每个CPU,都有它固定的ID号,ID号就是这个CPU唯一的标识,它可能隐含 ...
- bzoj4593: [Shoi2015]聚变反应炉
这道题的难点其实是在设DP方程,见过就应该会了 令f0,i表示先激发i的父亲,再激发i,把i的整棵子树都激发的最小费用 f1,i表示先激发i,再激发i的父亲,把i的整棵子树都激发的最小费用 设x,y为 ...
- POJ2528 Mayor's posters —— 线段树染色 + 离散化
题目链接:https://vjudge.net/problem/POJ-2528 The citizens of Bytetown, AB, could not stand that the cand ...
- jQuery 与 AJAX 实现失去焦点验证用户名是否合格
JSP页面 <tr onmouseover="currentcolor=this.style.backgroundColor;this.style.backgroundColor='# ...
- MultipartResolver实现文件上传功能
转自:https://www.jb51.net/article/142736.htm springMVC默认的解析器里面是没有加入对文件上传的解析的,,使用springmvc对文件上传的解析器来处理文 ...
- 杭电acm5698-瞬间移动(2016"百度之星" - 初赛(Astar Round2B))
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5698 Problem Description 有一个无限大的矩形,初始时你在左上角(即第一行第一列), ...