datatables CDN链接地址:

<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs/dt-1.10.16/datatables.min.css"/>

<script type="text/javascript" src="https://cdn.datatables.net/v/bs/dt-1.10.16/datatables.min.js"></script>

1.datatables初始化

开发中许多页面都需要datatables,很多设置都是重复的,所以对其默认值做了统一设置。

默认值设置:

//默认错误模式是alert出异常信息,非常不友好,改成none后将不显示alert窗口
$.fn.dataTable.ext.errMode = 'none';
// 覆盖默认设置
$.extend($.fn.dataTable.defaults, {
paging : true, // 分页
lengthChange : false, // 长度
searching : false, // 是否显示默认搜索
info : true, // 是否显示列表信息
autoWidth : true, // 是否自动宽度
processing : true, // 是否显示'处理中'
serverSide : true, // 是否是服务端处理
ordering : true, // 是否支持排序
ajax : {
dataSrc : 'list', // 重置返回的JSON消息数据头,datatables默认是'data'
type : 'POST', // 默认是post提交
data : function(data) {
// 自动获得form 表单的数据,并设置到data中提交查询
var arrayInput = $("form :input");
if (arrayInput != undefined && arrayInput.length > 0) {
for (var i = 0; i < arrayInput.length; i++) {
data[arrayInput[i].id] = arrayInput[i].value;
}
}
// 获得orderby条件,设置到orderby中提交查询
var orderBy = '';
for (var i = 0; i < data.order.length; i++) {
order = data.order[i];
column = data.columns[order.column];
orderBy += ',' + column.data + " " + order.dir;
}
if (orderBy != '') {
orderBy = orderBy.substr(1);
}
data.orderBy = orderBy;
// 删除内置的列信息,排序信息,搜索信息
// 不删除会全部提交到后台,数据量很大
delete (data.columns);
delete (data.order);
delete (data.search);
}
},
language : {
decimal : "",
emptyTable : "查无数据",
info : "当前显示第 _START_ 至 _END_ 项,共 _TOTAL_ 项。",
infoEmpty : "当前显示第 0 至 0 项,共 0 项",
infoFiltered : "(由 _MAX_ 项结果过滤)",
infoPostFix : "",
thousands : ",",
lengthMenu : "每页 _MENU_ 项",
loadingRecords : "载入中...",
processing : "处理中...",
search : "搜索:",
zeroRecords : "没有匹配结果",
paginate : {
"first" : "首页",
"previous" : "上页",
"next" : "下页",
"last" : "末页"
},
aria : {
"sortAscending" : ": 以升序排列此列",
"sortDescending" : ": 以降序排列此列"
}
},
drawCallback : function() {
// 表格绘画完成后,自动添加第一个行“序号”列
var api = this.api();
var startIndex = api.context[0]._iDisplayStart;
var columns = api.context[0].aoColumns;
var columnIndex = -1;
for (var i = 0; i < columns.length; i++) {
if (columns[i].title == '序号') {
columnIndex = i;
break;
}
}
if (columnIndex != -1) {
api.column(columnIndex).nodes().each(function(cell, i) {
cell.innerHTML = startIndex + i + 1;
});
}
}
});

调用:

// 初始化表格
function initTable() {
var i = -1;
table = $('#dataTable').DataTable(
{
ajax : {
url : prefix + "/list2/"
},
columnDefs : [
{
targets : ++i,
title : '',
data : null,
render : function(data, type, row, meta) {
var result = '<input type="checkbox" value="'
+ row.dictID + '" />';
return result;
},
orderable : false
}, {
                            //默认值设置JS中会判断此列是否存在
title : "序号",
"searchable" : false,
"orderable" : false,
"targets" : ++i,
data : null,
}, {
title : "字典ID",
"searchable" : false,
"orderable" : false,
"targets" : ++i,
data : "dictID",
}, {
title : "数据字典名称",
"searchable" : false,
"orderable" : true,
"targets" : ++i,
data : "dictName",
}, {
title : "数据字典值",
"searchable" : false,
"orderable" : true,
"targets" : ++i,
data : "dictValue",
}],
order : [ [ 5, 'asc' ] ]
});
}

2.即时搜索

我的列表原来没有即时搜索效果,后来考虑把搜索条件做统一获得和提交,不要在各自的JS中每次提交。

就给搜索表单加一个id,且名字为search。这个时候发现就产生了即时搜索的效果,只要表单获得焦点或有输入。

列表就会自动带上条件查询。

3.刷新表格,保持在当前页

ajax.reload(null, false); //刷新后还保持在当前页面
ajax.reload(); //刷新后自动到第一页

官方链接:https://datatables.net/reference/api/ajax.reload()

4.列隐藏

通过列属性:className

示例代码:

columnDefs : [
{
targets : ++i,
title : '',
data : null,
orderable : false,
className : $('isValid').val() == '2' ? ''
: 'hidden',
render : function(data, type, row, meta) {
var result = '<input type="checkbox" value="'
+ row.detailID + '" />';
return result;
}
}, {
title : "序号",
"searchable" : false,
"orderable" : false,
"targets" : ++i,
data : null,
}]

5.销毁table

table.destroy(); // table是datatable的实例变量

$('#dataTable').empty(); // 清空table的html,这一步必须要有,否则会清除不干净

datatables日常使用集合的更多相关文章

  1. 一些日常工具集合(C++代码片段)

    一些日常工具集合(C++代码片段) ——工欲善其事,必先利其器 尽管不会松松松,但是至少维持一个比较小的常数还是比较好的 在此之前依然要保证算法的正确性以及代码的可写性 本文依然会持久更新,因为一次写 ...

  2. RichTextBox控件日常使用集合

    1.RichTextBox控件自动滚动到底部 richTextBox1.ScrollToCaret(); //将控件的内容滚动到当前光标位置

  3. Select2日常操作集合

    1.获得多选值 var arraySelected = $('#carTypes').select2("data"); var carTypesDesc = ''; for (va ...

  4. 用Stream流轻易的收集数据

    前言 在日常使用集合时,我们通常使用迭代器来处理集合中的数据,假如有一个用户列表 List,我们想要将用户按照性别分组生成 Map<String, List>.需要遍历 List,然后判断 ...

  5. 程序猿的日常——Java中的集合列表

    列表对于日常开发来说实在是太常见了,以至于很多开发者习惯性的用到数组,就来一个ArrayList,根本不做过多的思考.其实列表里面还是有很多玩法的,有时候玩不好,搞出来bug还得定位半天.所以这里就再 ...

  6. MongoDB通过Shell 实现集合的日常归档

    1.MongoDB数据归档的意义 和其他类型的数据库一样,归档对MongoDB同样重要.通过归档,可以保持集合中合适的数据量,对数据库的性能是一种保障,也就是大家常说的数据冷热分离. 同时,归档对数据 ...

  7. PHP 日常开发过程中的bug集合(持续更新中。。。)

    PHP 日常开发过程中的bug集合(持续更新中...) 在日常php开发过程中,会遇到一些意想不到的bug,所以想着把这些bug记录下来,以免再犯! 1.字符串 '0.00'.'0.0'.'0'  是 ...

  8. Java8之Stream 集合聚合操作集锦(含日常练习Demo)

    Stream 是用函数式编程方式在集合类上进行复杂操作的工具,其集成了Java 8中的众多新特性之一的聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找.遍历.过滤以及常 ...

  9. 【日常笔记】datatables表格数据渲染

    现在有很多表格渲染方式 这里只是记录怎么使用datatables渲染数据 使用datatables可以更方便的来渲染数据 [中文api]http://datatables.club/index.htm ...

随机推荐

  1. python练习实例2--------构造数据类型

    有如下数据类型 cars = ['鲁A32444', '鲁B12333', '京B8989M', '黑C49678', '黑C46555', '沪B25041', '黑C34567'] locatio ...

  2. 学习go语言编程系列之定义变量

    package main import ( "fmt" "math") func main() { // 1. 定义变量名age,不初始化,使用对应类型的默认值 ...

  3. jsp查询修改

    也是只帖代码....不讲解. 1.search.jsp <%@ page language="java" import="java.util.*" pag ...

  4. 在Linux上安装Git

    Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.而国外的GitHub和国内的Coding都是项目的托管平台.但是在使用Git工具的时候,第一步要学会如何安装gi ...

  5. [译]Debug ASP.NET Core 2.0源代码

    原文 首先你的VS必须为VS 2017 15.3或以上版本. 打开你的Startup类,在ConfigureServices方法上设置个断点,按F5 Debug应用. 在Call Stack(调用堆栈 ...

  6. dll和lib的关系(转)

    转自http://blog.163.com/zhengjiu_520/blog/static/3559830620093583438464/ 前面有一章说编译与链接的,说得很简略,其实应该放到这一章一 ...

  7. 2.4 if-else

    if-else 想一想:在使用if的时候,它只能做到满足条件时要做的事情.那万一需要在不满足条件的时候,做某些事,该怎么办呢? 答:使用 if-else <1>if-else的使用格式 i ...

  8. luogu P3238 [HNOI2014]道路堵塞

    传送门 这什么题啊,乱搞就算了,不知道SPFA已经死了吗 不对那个时候好像还没死 暴力就是删掉边后跑Dijkstra SPFA 然后稍微分析一下,可以发现题目中要求的不经过最短路某条边的路径,一定是先 ...

  9. steps/align_si.sh

    usage: steps/align_si.sh <data-dir> <lang-dir> <src-dir> <align-dir> e.g.: s ...

  10. A Bayesian Approach to Deep Neural Network Adaptation with Applications to Robust Automatic Speech Recognition

    基于贝叶斯的深度神经网络自适应及其在鲁棒自动语音识别中的应用     直接贝叶斯DNN自适应 使用高斯先验对DNN进行MAP自适应 为何贝叶斯在模型自适应中很有用? 因为自适应问题可以视为后验估计问题 ...