datable常规配置,百度一大堆

  1. function prepareDatatable(selector, options) {
  2. var defaultOptions = {
  3. autoWidth: true,
  4. deferRender: true,
  5. processing: true,
  6. lengthMenu: [10, 25, 50, 100],
  7. colReorder: true,
  1.           stateSave:true,//datatable分页刷新后 固定在当前页
              retrieve:true,//和destroy一起,用于屏蔽Cannot reinitialise DataTable提示的
              destroy:true,
    serverSide: false,//true表示服务器端分页,false表示前端分页
    pagingType: "full_numbers",
  1.           //有兴趣的话,可以好好研究一下dom,这就很清楚datatable的布局,也好自己加按钮等
  2. //dom: '<"dataTables_header"<"dataTables_toolbar" <"dataTables_controls" r>f>>t<"dataTables_footer row"<"col-md-6 m-t" <"pull-left" l><"pull-left" i>><"col-md-6 m-t"p>><"clearfix">',
  3. dom: '<"dataTables_header"<"dataTables_toolbar" <"dataTables_controls" >f>>t<"dataTables_footer row"<"col-md-6 m-t" <"pull-left" l><"pull-left" i>><"col-md-6 m-t"p>><"clearfix">',
  4. createdRow: function (row, data, dataIndex) {
  5. },
  6. initComplete: function () {
  7. }
  8. };
  9. var tableOption = $.extend(true, {}, defaultOptions);
  10. if (options != null) {
  11. $.extend(true, tableOption, options);
  12. }
  13. return angular.element(selector).DataTable(tableOption);
  14. }
  1. (function () {
  2. var cacModule = angular.module('oplus.cac');
  3. //模型控制器
  4. cacModule.controller('CacJobListCtrl', CacJobListCtrl);
  5. CacJobListCtrl.$inject = ['$scope', '$timeout', '$state', 'cacService', '$http', '$compile', '$uibModal', '$localStorage', '$stateParams', '$filter', '$sessionStorage'];
  6.  
  7. function CacJobListCtrl($scope, $timeout, $state, cacService, $http, $compile, $uibModal, $localStorage, $stateParams, $filter, $sessionStorage) {
  8. var vm = this;
  9.  
  10. vm.views = {
  11. template: {},
  12. tableInstance: null,
  13. findJobStatus: findJobStatus
  14. };
  15.  
  16. var tableOption = {
  17. id: 'cacJobTable',
  18. order: [[2, 'desc']],//做了后端分页,前端排序就没用了
  19. serverSide: true,
  20. aoColumns: [
  21. {mData: 'templateName', title: '模板'},
  22. {
  23. mData: 'auditParams', title: '检查项',
  24. render: function (data, type, row, meta) {
  25. var auditParams = angular.fromJson(row.auditParams);
  26. var html = '';
  27. for (var i = 0; i < auditParams.length; i++) {
  28. var auditParam = auditParams[i];
  29. html += '脚本:<strong>' + auditParam.scripts.length + '</strong>,' +
  30. '规则:<strong>' + auditParam.ruleExpressions.length + '</strong>,' +
  31. '主机:<strong>' + auditParam.hosts.length + '</strong>' +
  32. '<br>';
  33.  
  34. }
  35. var actionHtml = '<div>' + html + '</div>';
  36. return actionHtml;
  37. }
  38. },
  39. {
  40. mData: 'createdAt', title: '开始时间',
  41. render: function (data, type, row, meta) {
  42. var createdAt = $filter('date')(row.createdAt, 'yyyy-MM-dd HH:mm:ss');//格式化时间
  43. return createdAt;
  44. }
  45. },
  46. {
  47. mData: 'endedAt', title: '结束时间',
  48. render: function (data, type, row, meta) {
  49. var endedAt = $filter('date')(row.endedAt, 'yyyy-MM-dd HH:mm:ss');
  50. return endedAt;
  51. }
  52. },
  53. {mData: 'createdBy', title: '执行人'},
  54. {
  55. mData: 'id', title: '执行状态',
  56. render: function (data, type, row, meta) {
  57. var id = "'" + row.id + "'";
  58. var jobStatus = row.jobStatus;
  59. var actionHtml = "";
  60. if (jobStatus == "running") {
  61. actionHtml = '<button type="button" class="btn btn-info btn-xs" title="查看" ng-click="cacJobListCtrlVm.views.findJobStatus(' + id + ')">' +
  62. '正在执行</button>';
  63. } else if (jobStatus == "completed") {
  64. actionHtml = '<button type="button" class="btn btn-success btn-xs" title="查看" ng-click="cacJobListCtrlVm.views.findJobStatus(' + id + ')">' +
  65. '成功</button>';
  66. } else {
  67. actionHtml = '<button type="button" class="btn btn-danger btn-xs" title="查看" ng-click="cacJobListCtrlVm.views.findJobStatus(' + id + ')">' +
  68. '失败</button>';
  69. }
  70. return actionHtml;
  71. },
  72. createdCell: function (nTd, sData, oData, iRow, iCol) {
  73. $compile(nTd)($scope);
  74. }
  75. },
  76. {
  77. mData: 'id',
  78. title: '操作',
  79. className: 'text-center',
  80. searchable: false,
  81. orderable: false,
  82. render: function (data, type, row, meta) {
  83. var actionHtml =
  84. '<div class="btn-group">' +
  85. '<a type="button" class="btn btn-default btn-sm" ui-sref="app.cac.result({jobId:\'' + row.id + '\'})">查看结果' +
  86. '</a>' +
  87. '</div>';
  88. return actionHtml;
  89. },
  90. createdCell: function (nTd, sData, oData, iRow, iCol) {
  91. $compile(nTd)($scope);
  92. }
  93. }
  94. ]
  95. };
  96.      //这里包含了几种datatable通过ajax获取数据的几种方式
  97. function init() {
  98. if (_appconfig.modules.cac.useLocalDb) {
             //1、
  99. tableOption.ajax = {
  100. url: 'app/modules/cac/api/job.json',
  101. dataSrc: "aaData"
  102. };
  103. } else {
  104. var token = $localStorage.authenticationToken || $sessionStorage.authenticationToken;
              //2、使用后台分页就只能使用这种,这种请求ajax会自带start和length参数到后台。不然就自己重新前端的分页方法
  105. tableOption.ajax = {
  106. url: _appconfig.apiBaseUrls.cac + '/api/cac/audit/jobs',
  107. dataSrc: "data",
  108. async: false,
                //加headers是为了加token,方便后台的验证
  109. headers: {
  110. "Authorization": 'Bearer ' + token,
  111. "X-JWT-Authorization": 'Bearer ' + token
  112. }
  113. };
              //这里还可以用$http();
            
                
  1.        //3、  
           $http({
  2. url: _appconfig.apiBaseUrls.cac + '/api/cac/audit/hosts'
  3. }).success(function (ciList, status, header, config, statusText) {
  4. tableOption.ajax = function (data, callback, settings) {
  5. callback(
  6. cacService.assembleTable(ciList)
  7. );
  8. };
  9.  
  10. $timeout(function () {
  11. cacService.prepareDatatable(".cac-template-host-dialog .cac-template-host-table", tableOption);
  12. }, 10);
  13. }).error(function (data, header, config, status) {
  14. console.log("Finish $http ajax error");
  15. });
  16.  
  17.           
  1. //将后台返回的List数据组装成datatable要求的数据格式
    function assembleTable(ciList) {
    var tableObj = {
    aaData: [],
    totalRecords: 0
    };
    tableObj.aaData = ciList;
    tableObj.totalRecords = ciList.length;
    return tableObj
    }
  1.  
  1.  
  1. }
  2. $timeout(function () {
  3. //初始化datatables,并保存实例
  4. vm.views.tableInstance = cacService.prepareDatatable(".jobTableDiv .jobTable", tableOption);
  5. }, 10);
  6.  
  7. var template = $stateParams.template;
  8. if (template != null) {
  9. $state.go("app.cac.job.addJob", {template: template});
  10. }
  11. }
  12.  
  13. function findJobStatus(id) {
  14. $uibModal.open({
  15. templateUrl: 'app/modules/cac/job/job-run-log.html',
  16. controller: 'CacJobRunLogCtrl',
  17. controllerAs: 'cacJobRunLogVm',
  18. backdrop: 'static',
  19. size: 'lg',//设置模态框大小
  20. resolve: {
  21. entity: function () {
  22. return {
  23. id: id
  24. }
  25. }
  26. }
  27. }).result.then(function (result) {
  28. });
  29. }
  30.  
  31. init();
  32.  
  33. }
  34.  
  35. })
  36. ();

java后台

  1. @GetMapping("/jobs")
  2. @ResponseBody
  3. public JSONObject getAllTestPages(@RequestParam(value = "start", defaultValue = "0") Integer start,
  4. @RequestParam(value = "length", defaultValue = "10") Integer length) {
  5. Sort sort = new Sort(Sort.Direction.DESC, "createdAt");//后台排序
  6. Pageable pageable = new PageRequest(start / length, length, sort);
  7. Page<AuditJob> page = auditJobRepository.findAll(pageable);
         /**后台要返回datatable要求的属性,draw就不需要返回了,因为每次请求的draw是不相同的,每一次前端请求draw都会自增,也会传递到后台,所以后台无需做处理也会自动返回去,做处理就是多此一举而且还很麻烦*/
  8. JSONObject jsonObject = new JSONObject();
  9. //将获取的数据组装成Datatable标准格式返回
  10. jsonObject.put("data", page.getContent());
  11. //数据总条数
  12. jsonObject.put("recordsTotal", page.getTotalElements());
  13. //过滤查询后的条数
  14. jsonObject.put("recordsFiltered", page.getTotalElements());
  15. return jsonObject;
  16. }

datatable详解(angular-datatable)+后台分页(springmvc)的更多相关文章

  1. C# DataSet和DataTable详解

    1.C# DataSet和DataTable详解:http://www.cnblogs.com/top5/archive/2009/04/23/1441765.html 2.DataSet和DataT ...

  2. 详解Springboot中自定义SpringMVC配置

    详解Springboot中自定义SpringMVC配置 WebMvcConfigurer接口 ​ 这个接口可以自定义拦截器,例如跨域设置.类型转化器等等.可以说此接口为开发者提前想到了很多拦截层面的需 ...

  3. DataTable详解,以及dataview

    原文地址:http://www.cnblogs.com/moss_tan_jun/archive/2010/09/20/1832131.html 得到DataTable 得到DataTable有许多方 ...

  4. DataSet和DataTable详解

    先构建一个结构与用户请求数据结构相同的DataTable,然后将用户的请求数据填充到构建好的DataTable中,最后将DataTable添加到DataSet中. DataTable,,DataCol ...

  5. 关于PagedDataSource分页属性与DataSet和DataTable详解

    Asp.net提供了三个功能强大的列表控件:DataGrid.DataList和Repeater控件,但其中只有DataGrid控件提供分页功能.相对DataGrid,DataList和Repeate ...

  6. C# DataTable 详解

    添加引用 using System.Data; 创建表 //创建一个空表 DataTable dt = new DataTable(); //创建一个名为"Table_New"的空 ...

  7. 001_ jQuery的表格插件dataTable详解

    一. 1.启用id为"datatable1"标签的html的表格jQuery库 $("#datatable1").dataTable( ) Reference: ...

  8. C# DataTable详解

    添加引用 using System.Data; 创建表 //创建一个空表 DataTable dt = new DataTable(); //创建一个名为"Table_New"的空 ...

  9. Spring 详解(三)------- SpringMVC拦截器使用

    目录 不拦截静态资源 使用拦截器 拦截器使用测试 SimpleMappingExceptionResolver 拦截异常 不拦截静态资源 如果配置拦截类似于*.do格式的拦截规则,则对静态资源的访问是 ...

随机推荐

  1. win10 家庭中文版打开本地组策略编辑器

      win10 家庭中文版打开本地组策略编辑器 CreateTime--2018年5月14日09:01:25 Author:Marydon 1.问题描述 2.问题解析 win10家庭版没有访问本地组策 ...

  2. 解析drupal_render()

    drupal_render()函数接收一个结构化的数组作为参数,然后调用theme()输出HTML. function drupal_render(&$elements) { ... ... ...

  3. Python-字符编码详解

    1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...

  4. 你所不知道的 CSS 阴影技巧与细节 滚动视差?CSS 不在话下 神奇的选择器 :focus-within 当角色转换为面试官之后 NPOI 教程 - 3.2 打印相关设置 前端XSS相关整理 委托入门案例

    你所不知道的 CSS 阴影技巧与细节   关于 CSS 阴影,之前已经有写过一篇,box-shadow 与 filter:drop-shadow 详解及奇技淫巧,介绍了一些关于 box-shadow  ...

  5. 使用命令行设置树莓派的wifi网络

    假设你没有登录到经常使用的图形用户界面.这样的方法就适合用来设置树莓派的wifi.尤其是在你没有屏幕或者有线网络,仅使用串口控制线的时候.另外,这样的方法也不须要额外的软件,全部须要的东西都已经包括进 ...

  6. servlet响应解析

    response对象可以设置一些响应信息 1)设置状态码 response.setStatus(int) 2)设置响应头信息.定时刷新或者间隔 n 秒后跳转 response.setHeader(&q ...

  7. php 不等待返回的实现方法(异步调用)

    PHP异步执行的常用方式常见的有以下几种,可以根据各自优缺点进行选择: 1.客户端页面采用AJAX技术请求服务器优点:最简单,也最快,就是在返回给客户端的HTML代码中,嵌入AJAX调用,或者,嵌入一 ...

  8. 孙源即将分享 DynamicCocoa 实现细节

    孙源即将分享 DynamicCocoa 实现细节   我的公众号之前发的一文中提到滴滴做了一个很牛逼的动态化方案 DynamicCocoa.该方案设计得非常精巧,解决了两种不同的语言在代码上如何等价生 ...

  9. spring-boot 中application.properties的各种配置

    ###########################################################datasource connect mysql################# ...

  10. 逃生dp

    蒜头君在玩一款逃生的游戏.在一个 n \times mn×m的矩形地图上,蒜头位于其中一个点.地图上每个格子有加血的药剂,和掉血的火焰,药剂的药效不同,火焰的大小也不同,每个格子上有一个数字,如果格子 ...