datatables 添加复选框及序号列及使用ajax请求

前端之家收集整理的这篇文章主要介绍了datatables 添加复选框及序号列及使用ajax请求前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.页面引入样式 和 js 文件


2. html 代码

  1. <table id="keeperUserList" class="display table table-striped table-bordered table-hover table-checkable">
  2. <thead>
  3. <span style="white-space:pre"> </span><tr>
  4. <th>
  5. <label class="mt-checkBox mt-checkBox-single mt-checkBox-outline">
  6. <input type="checkBox" name="keeperUserGroup-checkable" class="group-checkable" data-set="#sample_1 .checkBoxes" />
  7. <span></span>
  8. </label>
  9. </th>
  10. <th class="text-center">序号</th>
  11. <th class="text-center">姓名</th>
  12. <th class="text-center">性别</th>
  13. <th class="text-center">手机号码 </th>
  14. <th class="text-center">所属门店 </th>
  15. <th class="text-center">所属职位 </th>
  16. <th class="text-center">账号状态</th>
  17. <th class="text-center">注册时间 </th>
  18. <th class="text-center">操作</th>
  19. </tr>
  20. </thead>
  21. <tbody></tbody>
  22. </table>

3. js 代码
  1. /**
  2. * 初始化列表
  3. */
  4. function initKeeperUserListTable() {
  5. keeperUserList = $('#keeperUserList').DataTable({
  6. // ajax配置为function,手动调用异步查询
  7. ajax : {
  8. type: "GET",url: ctxFront + '/crm/keeper/account/list',// 传入已封装的参数
  9. data: function(data){
  10. data.page = data.start / data.length + 1;
  11. data.limit = data.length;
  12. // 右上角搜索
  13. data.keyword = data.search.value;
  14. data.version = CONSTANT.APISERVER.KEEPER;
  15. delete data.columns;
  16. },dataType: "json",dataSrc : function(result) {
  17. // 后台不实现过滤功能,每次查询均视作全部结果
  18. result.recordsTotal = result.data.totalCount;
  19. result.recordsFiltered = result.data.totalCount || 0;
  20. result.data = result.data.kavs || {};
  21. delete result.data.totalCount;
  22. delete result.data.kavs;
  23. return result.data;
  24. }
  25. },scrollX : true,// 每次对 datatable 进行操作时也是请求后台
  26. serverSide : true,// 加载状态
  27. processing : true,// 默认排序查询,为空则表示取消默认排序否则复选框一列会出现小箭头
  28. order: [],// 分页,默认打开
  29. paging : true,// 是否禁用原生搜索
  30. searching: true,language : CONSTANT.DATA_TABLES.DEFAULT_OPTION.LANGUAGE,columns : [
  31. CONSTANT.DATA_TABLES.COLUMN.CHECKBox,{
  32. data : null,bSortable : false,targets : 0,width : "30px",render : function(data,type,row,Meta) {
  33. // 显示行号
  34. var startIndex = Meta.settings._iDisplayStart;
  35. return startIndex + Meta.row + 1;
  36. }
  37. },{
  38. data : 'name',width : "130px",},{
  39. data : 'passportv.sex',className : "text-center",Meta) {
  40. return getKeeperUserSex(data);
  41. }
  42. },{
  43. data : '.passportv.phone',width : "60px",Meta) {
  44. data = data || "";
  45. return '<span title="' + data + '">' + data + '</span>';
  46. }
  47. },{
  48. data : 'storev.name',width : "70px",{
  49. data : 'position',Meta) {
  50. return getKeeperUserPosition(data);
  51. }
  52. },{
  53. data : 'status',Meta) {
  54. return getKeeperUserStatus(data);
  55. }
  56. },{
  57. data : 'creationDate',Meta) {
  58. return dateForamtToString(data,'yyyy-MM-dd hh:mm:ss');
  59. }
  60. },{
  61. data : 'operate',visible : true,width : '200px',full) {
  62. if (!full.passportv) {
  63. return '';
  64. }
  65. var edit = '<button onclick="editKeeperUserInfo(' + full.passportv.id + ')" class="btn btn-sm green btn-outline filter-submit margin-bottom">修改</button>';
  66. var del = '<button onclick="deleteKeeperUser(' + full.passportv.id + ');" class="btn btn-sm red btn-outline filter-cancel">删除</button>';
  67. var stop = '<button onclick="stopKeeperUser(' + full.passportv.id + ');" class="btn btn-sm red btn-outline filter-cancel">冻结</button>';
  68. var unseal = '<button onclick="unsealKeeperUser(' + full.passportv.id + ');" class="btn btn-sm red btn-outline filter-cancel">解冻</button>';
  69. var detail = '<a target="_blank" href="' + ctxFront + '/crm/keeper/account/info?id=' + full.passportv.id + '" class="btn btn-sm purple btn-outline filter-cancel">详情</a>';
  70. var result = edit;
  71. if(full.status == 0){
  72. result += stop + del + detail;
  73. }else if(full.status == 1){
  74. result += unseal + del + detail;
  75. }
  76. return result;
  77. }
  78. }
  79. ],drawCallback : function() {
  80. // 取消全选
  81. $(":checkBox[name='keeperUserGroup-checkable']").prop('checked',false);
  82. },createdRow : function(row,data,dataIndex) {
  83. if (data.status == 1) {
  84. // 已冻结
  85. $(row.children[7]).addClass('danger');
  86. } else if (data.status == 2) {
  87. // 已停用
  88. $(row.children[7]).addClass('warning');
  89. } else if (data.status == 3) {
  90. // 已注销
  91. $(row.children[7]).addClass('error');
  92. }
  93. },buttons : [
  94. {
  95. text : '<li class="fa fa-plus"></li> 新增',titleAttr : '新增管家账号',className : "btn green",action: function ( e,dt,node,config ) {
  96. keeperUserIsupdate = false;
  97. clearKeeperUserFormData();
  98. // 重置form校验
  99. FormValidation.resetForm();
  100. $('#editKeeperUserWin .modal-title').text('新增管家信息');
  101. $('#editKeeperUserWin').modal('show');
  102. }
  103. },{
  104. text : '<li class="fa fa-search"></li> 搜索',titleAttr : '按条件搜索',className : "btn btn-sm green btn-outline filter-submit margin-bottom",config ) {
  105. $('#queryKeeperUserWin').modal({
  106. show : true
  107. });
  108. }
  109. },{
  110. extend : "print",className : "btn dark btn-outline"
  111. },{
  112. extend : "pdf",className : "btn green btn-outline"
  113. },{
  114. extend : "excel",className : "btn yellow btn-outline"
  115. }
  116. ],dom:"<'row' <'col-md-12'B>><'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r><'table-scrollable't><'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>"
  117.  
  118. });
  119. // 如果 scrollX : true 使用这个$('#keeperUserList_wrapper').on("change",":checkBox",function() {
  120. // 如果 scrollX : false $('#keeperUserList').on("change",function() {
  121. // 因为 scrollX : true 为true加了滚动条,表头和表体成了两个表格,这个可以查看代码就知道
  122. $('#keeperUserList_wrapper').on("change",function() {
  123. // 列表复选框
  124. if ($(this).is("[name='keeperUserGroup-checkable']")) {
  125. // 全选
  126. $(":checkBox",'#keeperUserList').prop("checked",$(this).prop("checked"));
  127. }else{
  128. // 一般复选
  129. var checkBox = $("tbody :checkBox",'#keeperUserList');
  130. $(":checkBox[name='cb-check-all']",'#keeperUserList').prop('checked',checkBox.length == checkBox.filter(':checked').length);
  131. }
  132. }).on('preXhr.dt',function(e,settings,data) {
  133. // ajax 请求之前事件
  134. data.page = data.start / data.length + 1;
  135. data.limit = data.length;
  136. data.version = CONSTANT.APISERVER.KEEPER;
  137. delete data.columns;
  138. });
  139. // 搜索框事件
  140. $('#keeperUserList_filter input').unbind().keyup(function() {
  141. var params = {};
  142. if ($(this).val().trim()) {
  143. params.keyword = $(this).val().trim();
  144. }
  145. keeperUserList.settings()[0].ajax.data = params;
  146. keeperUserList.ajax.reload();
  147. });
  148. }
  149.  
  150. /**
  151. * 搜索 这个搜索解决datatable自定义搜索
  152. */
  153. function queryKeeperUserList() {
  154.  
  155. // 添加参数
  156. var params = {};
  157. if ($('#queryKeeperUserName').val()) {
  158. params.name = $('#queryKeeperUserName').val();
  159. }
  160. if ($('#queryKeeperUserPhone').val()) {
  161. params.phone = $('#queryKeeperUserPhone').val();
  162. }
  163. if ($('#queryKeeperUserStatus').val() != '') {
  164. params.status = $('#queryKeeperUserStatus').val();
  165. }
  166. if ($('#queryKeeperUserPosition').val() != '') {
  167. params.position = $('#queryKeeperUserPosition').val();
  168. }
  169. if ($('#queryKeeperUserOrderBy').val()) {
  170. params.orderBy = $('#queryKeeperUserOrderBy').val();
  171. }
  172.  
  173. keeperUserList.settings()[0].ajax.data = params;
  174. keeperUserList.ajax.reload();
  175. $('#queryKeeperUserWin').modal('hide');
  176. }


变量js

  1. var CONSTANT = {
  2. // datatables常量
  3. DATA_TABLES : {
  4. DEFAULT_OPTION : { // DataTables初始化选项
  5. LANGUAGE : {
  6. sProcessing : "处理中...",sLengthMenu : "显示 _MENU_ 项结果",sZeroRecords : "没有匹配结果",sInfo : "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",sInfoEmpty : "显示第 0 至 0 项结果,共 0 项",sInfoFiltered : "(由 _MAX_ 项结果过滤)",sInfoPostFix : "",sSearch : "搜索:",sUrl : "",sEmptyTable : "表中数据为空",sLoadingRecords : "载入中...",sInfoThousands : ",",oPaginate : {
  7. sFirst : "首页",sPrevIoUs : "上页",sNext : "下页",sLast : "末页"
  8. },"oAria" : {
  9. "sSortAscending" : ": 以升序排列此列","sSortDescending" : ": 以降序排列此列"
  10. }
  11. },// 禁用自动调整列宽
  12. autoWidth : false,// 为奇偶行加上样式,兼容不支持CSS伪类的场合
  13. stripeClasses : [ "odd","even" ],// 取消默认排序查询,否则复选框一列会出现小箭头
  14. order : [],// 隐藏加载提示,自行处理
  15. processing : false,// 启用服务器端分页
  16. serverSide : true,// 禁用原生搜索
  17. searching : false
  18. },COLUMN : {
  19. // 复选框单元格
  20. CHECKBox : {
  21. className: "td-checkBox",orderable : false,data : "id",Meta) {
  22. var content = '<label class="mt-checkBox mt-checkBox-single mt-checkBox-outline">';
  23. content += ' <input type="checkBox" class="group-checkable" value="' + data + '" />';
  24. content += ' <span></span>';
  25. content += '</label>';
  26. return content;
  27. }
  28. }
  29. },// 常用render可以抽取出来,如日期时间、头像等
  30. RENDER : {
  31. ELLIPSIS : function(data,Meta) {
  32. data = data || "";
  33. return '<span title="' + data + '">' + data + '</span>';
  34. }
  35. }
  36. }
  37.  
  38. };

猜你在找的Ajax相关文章