1 版本号

DataTables 1.10.12

2 API文档地址

http://datatables.club/reference/option/ 官方option

http://datatables.club/reference/api/

https://datatables.net/reference/option/ 官方(英文)

http://datatables.club/upgrade/1.10-convert.html 1.10.x与1.9.x参数名对照表

https://blog.csdn.net/zhu_xiao_yuan/article/details/51252300 datatables参数配置详解

http://datatables.club/manual/server-side.html 服务器处理(Server-side processing)

https://www.cnblogs.com/amoniyibeizi/p/4548111.html api使用详解

https://www.datatables.net/download/release各种datatables插件下载

https://github.com/ssy341/datatables-cn/issuesgithub问题收集

http://datatables.club/reference/button/ 按钮文档

http://datatables.club/reference/button/excel.html 导出excel的文档

3 常见操作项

表格(tables)列(Columns)行(Rows)单元格(Cells)核心方法(Core)工具类(Utilities)

4 初始化方法

4.1 HTML部分代码参考:

注:table table-striped table-bordered table-hover四个类名不能缺少,如缺少table会造成表头空白

<table id="tablelist" class="table table-striped table-bordered table-hover"></table>

4.2 JS代码参考

var tablelist;
$(function(){
initTablelist();
});
function initTablelist(){
tablelist = $('#tablelist').DataTable({
"select": {"style": 'single'},// single:单行 multi:多行
"dom":"<'#datatableTopBox.datatablesTopStatusBar'<'#datatableTopCon'><'.fl.datableSearch'f>B>rt<'info'l>p",
"buttons": [
{
text: '<i class="fa fa-plus"></i>&nbsp;'+$.i18n.prop('public.button.New'),
action: function ( e, dt, node, config ) {
gotoPurchaseOrderDetail();
}
},
],
"order":[],
"bStateSave":true,
"stateLoadParams": function (settings, data) {
data.search.search="";//清除搜索框信息
data.order = [ ];//进入页面乱序
if(!commonRentruJson.info.isReturn){
data.start=0;//显示第一页数据
}
},
"ajax":{
"data":{},
"url":$ctx + "",
},
"columns":[//设定列的所有初始属性
dataTableConfig.checkBoxColumn(),//复选框列
dataTableConfig.serialNumberColumn,//序号列
{"title":$.i18n.prop('TenderingManagement.RequisitionNumber'),"width":"70px","data": "purchaseCode","searchable": true},
{"title":$.i18n.prop('public.form.operate'),"width":"100px","data": null,"orderable":false,"searchable": false,"className":"notitle",
render:function(data,type,row,meta){
var id = data.enterpriseId;
var str;
if(data.auditState=="3"){//查看 编辑
str = '<a onclick="gotoDetail(\"'+id+'\")">'+ $.i18n.prop('public.button.View')+'</a>&nbsp;<a onclick="gotoEdit(\"'+id+'\")">'+ $.i18n.prop('swal.Edit') +'</a>';
}else{
str = '<a onclick="gotoDetail(\"'+id+'\")">'+ $.i18n.prop('public.button.View')+'</a>';//查看
}
return str;
},"visible":true,JMisMandatory:false,JMdisabled:false,JMcolumnAsign:"operatingData"
}//操作
],
"initComplete":function( settings, json){
dataTableOrdinalFunction(this);//序号列12345顺序显示
}
});
}

其他参考配置项:

"lengthChange":true,//是否允许用户改变表格每页显示的记录数
"searching":true, //搜索框
"bSort":true, //排序

5常用API整理

5.1 设置title提示:

第一种:最新方案(2019年8月27日13:48:35)

不配置drawCallback即可自动显示title悬停提示,不需要提示的列(如:操作列)增加"className": "notitle"

注:

  1. 私人配置drawCallback项为空会重置datetable导致自动悬停提示失效,若确实需要用到drawCallback,需要在drawCallback里面按照第二种方法配置
  2. 除了不需要悬停提示的列用"notitle"外,其它列如需要配置className时,命名不要包含notitle,因为在响应式中添加了notitle包含验证,若加上会导致此字段没有title效果

    示例:



    第二种:目前还生效,写配置时请尽可能采用第一种

    注:如多列不需要悬停提示,td:not('notitle')即可(对应列需配置"className":"notitle")

    通用表示法
"drawCallback": function(settings, json){
$.each($("#"+ settings.sTableId +" tbody tr td:not(:last-child)"),function(i,v){
$(v).attr("title",$(v).text())
})
},

指定特定的ID

"drawCallback": function(oSettings, json){
$.each($("#WorkPermitApplyList tbody tr td:not(:last-child)"),function(i,v){
$(v).attr("title",$(v).text())
})
},

5.2第一列复选框

"aoColumns":[
{"title":"<input type='checkbox' style='display:block;width:15px;height:15px;margin-left:10px' onclick='checkAll(this)'>", "data":null,"width":"80px","bSortable": false}, ],
"columnDefs":[
{ 'targets': [0],
"visible" : true,
'searchable':false,
'orderable':false,
'render': function (data, type, row){
return '<input type="checkbox" style="width: 15px;height: 15px;vertical-align:middle;margin-left:10px;" data-id ="'+ row.enterpriseId + '"/>';
}
},
]

5.3水平滚动条:

"scrollX": true, 已配置为默认配置

下面是最初用的解决滚动方法,需要去掉:

"initComplete":function( settings, json){//初始化结束后的回调函数
$("#contractList").wrap("<div class='datatables-scroll'></div>");
}

5.4 单选、多选、全选、全不选 事件

comtabsclick('example',initDatatables);//单行选中事件

comtabsclickm('example',initDatatables);//多行选中事件

以下是新增方案: "select": {"style": 'single'},// single:单行 multi:多行

1.简单调用

select: true, https://datatables.net/extensions/select/examples/initialisation/reload.html

2.blurable: true 点击表格意外地方,将失去选中

https://datatables.net/extensions/select/examples/initialisation/blurable.html

select: {

style: 'os',

blurable: true

}

3.复选框 https://datatables.net/extensions/select/examples/initialisation/checkbox.html

select: {

style:'os',

selector: 'td:first-child'

},

4.多选行 https://datatables.net/extensions/select/examples/initialisation/multi.html

select: {

style: 'multi'

}

5.单选 https://datatables.net/extensions/select/examples/initialisation/single.html

select: {

style: 'single'

}

6.获取选中

var count = table.rows( { selected: true } ).count();

var rowData = table.rows( indexes ).data().toArray();

7.全选和全不选

table.rows().select();

table.rows().deselect();

5.5 单行删除的方法(多行删除方法)

example.row(11).remove().draw(); row里面是第几行数据,从0开始

example.rows( '.selected' ).remove().draw() 删除表格中符合某类的数据(多行删除)

示例:点击某个单元格元素删除此行方法

$('#example tbody').on( 'click', '.sorting_1', function () {
$('#example').DataTable().row( $(this).parents('tr') ).remove().draw();
});
$("#del").click(function(){
var rowData = initDatatables.rows('.selected').data();
if(rowData.length==0){
toastr.warning("请选择一条数据!");
return;
}else{
var sid=rowData[0].sid; //主键
code...
}
});

5.6 排序设置

格式:"order": [[ 0, 'asc' ],[ 1, "desc" ]]

asc:升序 desc:降序

5.7 table行点击前面复选框选中事件

$('#planTaskFeedbackConfirmList tbody').on('click', 'tr', function (e) {
if ($(this).hasClass('selected') ) {
$(this).removeClass('selected');
$(this).find(".checkbox_select").attr("checked",false);
}else {
$(this).addClass('selected');
$(this).find(".checkbox_select").attr("checked","checked");
}
});

5.8 重新绘制表

projectStaffPlanningDetailTable.destroy();

$("#projectStaffPlanningDetailTable").empty();

initMyTableTables(url);

直接重绘

var url = $ctx + "/module/invitingProject?projectSid="+$("#projectSid").val();

dataGridTables.ajax.url(url).load();

拼接参数问题

若需要重载函数且有拼接参数,参数写data里面,不要拼接在url后面,且重复请求时先重置data

function search(){
projectStatusListTables.settings()[0].ajax.data = {
jm_app: 'app',
userCode: USER_INFO.usercode,
project: $("#search-drop-down").val()
};
var url = $ctx + "/module/projectStatusManagement/findInfoList";
projectStatusListTables.ajax.url(url).load();
}

5.9 集成下拉框selectpicker5

css:

.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn){
width: 80%;
}
table.dataTable tbody tr td:last-child{
overflow: visible;
}

行添加事件

$("#btn").on("click",function(){
var rowJson = {
nociteSid:null,
tenderCode:1111,
tenderName:"11111",
bidOpeningDate:new Date(),
bidOpeningAddress:"还是",
isOpenRecord:"s"
};
$('#openBidRecoredListCall').DataTable().row.add(rowJson).draw();
})
"columnDefs": [
{
"targets":[-1],//扩展列显示列位置
"width":"190px",
"class": "but_xq",
"data":"taskSid",
"orderable":false,
"bSortable": false,
"searchable": false, //是否参与搜索
"mRender": function (data) {
return '<select style="width:60%;" class="selectpicker" data-live-search="true" data-size="5" ><option>1</option></select>';
} }],
"drawCallback": function (settings, data) {
$('.selectpicker').selectpicker();
$('.selectpicker').unbind("changed.bs.select").on('changed.bs.select',function(e){
console.log($(this).val());//下拉框更新后的值
console.log(openBidRecoredListCall.row( $(this).parent().parent() ).data());//下拉框所在行的值
});
},

5.10 获取datatables的总行数(fnInitComplete当中使用)

var info = graphicSettings.page.info();
var dataRows = info.recordsTotal;

5.11 行绘制事件(例:默认行选中)

"createdRow": function( row, data, dataIndex ) {
if ( data.creator == "夏云飞" ) {
$(row).find("td:eq(2)").css("color","red");
$(row).find("td:eq(0)").attr("checked","true");
$(row).addClass( 'selected' );
}
},

5.12 切换人员/项目后datatables显示为空

原因:上一个table分页有100并且选择了第100页,现在只有50页面,bStateSave保存了状态,导致table选择的是第100页,所以页面显示空

解决办法:"bStateSave":false, //设置为false

注释说明:状态保存(stateSave),开启或者禁用状态储存。当你开启了状态储存,Datatables会存储一个状态到浏览器上, 包含分页位置,每页显示的长度,过滤后的结果和排序。当用户重新刷新页面,表格的状态将会被设置为之前的设置。

5.13 单选 多选

参数:tabid,tabs

comtabsclick('example',initDatatables); 单选方法

comtabsclickm('example',initDatatables); 多选方法

5.14 上移 下移功能

onclick='tableMoveUpward("#setUpBlock")' 上移

onclick='tableMoveDownward("#setUpBlock")'下移

注:暂时只适合只有一页的情况下

5.15 拖动列宽

<script src="<c:url value='/css/datatables/media/js/colresizable.js?v=${version}'/>"></script>
"initComplete": function(oSettings, json){
$('#documentListTables').colResizable();
},

https://github.com/Silvacom/colResize github参考样例

http://www.bacubacu.com/colresizable/插件官网

参考这位大佬来筛写的,有兴趣可去看 https://www.yuque.com/jmweb/pc/datatables

jquery datatable 全选,反选 参考文档的更多相关文章

  1. python: jquery实现全选 反选 取消

    引入这个jquery-1.12.4.js jquery实现全选 反选 取消 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitio ...

  2. jquery 书写全选反选功能

    书写一个后台管理中用到的全选反选功能.代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  3. jquery实现全选/反选功能

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

  4. jQuery实现全选/反选和批量删除

    <%@ page language="java" contentType="text/html; charset=utf-8"     pageEncod ...

  5. jQuery实现全选反选功能

    废话不说,直接上代码! <html> <head> <meta http-equiv="Content-Type" content="tex ...

  6. jquery 实现全选反选

    jquery代码 $(function () { $('#inputCheck').click(function () { if ($(this).attr("checked")) ...

  7. jquery checkbox 全选反选代码只能执行一遍,第二次就失败

    遇到问题背景: 在写到购物车的全选交互的时候,商品选中的状态只有在第一次的时候可以,第二次就无法选中:(代码如下) $(".chooseall").click(function() ...

  8. jquery实现全选 反选 取消

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 新版本的jquery checkbox 全选反选代码只能执行一遍,第二次就失败attr与prop区别

    $("#all_check").click(function() { $("input[name='checkShop[]']").attr("che ...

  10. jQuery全选反选实例

    1. $('#tb:checkbox').each(function(){ 每次都会执行 全选-取消操作,注意$('#tb :checkbox').prop('checked',true); tb后面 ...

随机推荐

  1. 基于Material Design风格开源的Avalonia UI控件库

    前言 今天大姚给大家分享一款基于Material Design风格开源.免费(MIT License)的Avalonia UI控件库:Material.Avalonia. 当前项目还处于alpha阶段 ...

  2. 为 OpenWrt 路由器编译 minieap-sysu 项目

    学校的校园网要使用锐捷认证,于是想把认证客户端装到刷了 OpenWrt 的路由器上面.然而认证客户端 Linux 版只支持 x86 架构,我的路由器处理器却是 AArch64 架构,装不了,所以只能想 ...

  3. Parallels Desktop 虚拟机网络地址

    bridge100 是宿主机在共享网络中的地址 bridge101 是宿主机在 Host-Only 网络中的地址 查询宿主机 IP 地址 $ ip addr show # 共享网络(默认) bridg ...

  4. 【Docker】之重启容器相关命令

    我想每次打开电脑,只要自动运行docker的时候,马上把设置指定的容器也自动运行起来. 首先查看一下容器启动情况: # 查看docker运行命令 docker ps -a --restart参数有3个 ...

  5. 图解Zabbix设置邮件报警

    Zabbix设置邮件告警   前提条件: Zabbix Server 和 Zabbix Agent都已安装完毕,并已启动   1.添加主机   2.配置邮件告警,这里以VSFTP服务为例 yum in ...

  6. ZXING 修复预览页面变形问题

    ZXING之前都用的好好的,结果在一个Android11的设备上翻了车 (基于全屏预览的情况下) 扫码页面预览效果变形, 在网上找了一些代码,修改后发现无效,不适用我这边的设备, 最后想着,预览结果变 ...

  7. C++ STL vector 性能之push_back、emplace_back、reserve

    #include <iostream> #include <vector> #include <chrono> using namespace std; const ...

  8. TypeScript 高级教程 – 把 TypeScript 当编程语言使用 (第二篇)

    前言 上一篇, 我们提到, TypeScript 进阶有 3 个阶段. 第一阶段是 "把 TypeScript 当强类型语言使用", 我们已经介绍完了. 第二阶段是 "把 ...

  9. 一文搞定WeakHashMap

    写在前面 在缓存场景下,由于内存是有限的,不能缓存所有对象,因此就需要一定的删除机制,淘汰掉一些对象.这个时候可能很快就想到了各种Cache数据过期策略,目前也有一些优秀的包提供了功能丰富的Cache ...

  10. 系统编程-进程-fork深度理解、vfork简介

    1. fork基本使用 #include <unistd.h> #include <stdio.h> int main(){ pid_t pid = fork(); if(pi ...