这个框架前前后后跳进了很多次坑,也算是本人比较愚笨吧做了很长的时间而积累的经验。。。
dataTable用了很久,今天在此总结一下使用方法以及常用属性的解释。
Html代码 :
<div class="row">
<div class="col-md-12">
<!-- BEGIN Portlet PORTLET-->
<div class="portlet box blue">
<!--框架头 -->
<div class="portlet-title">
<div class="caption">
<i class="fa fa-gift"></i>锁列表
</div>
</div>
<!--END 框架头 -->
<div class="portlet-body">
<!-- 搜索-->
<!--<div class="form-horizontal">-->
<form class="form-horizontal" action="/ajax/lock/list" method="POST" id="form">
<div class="form-wizard">
<div class="form-body">
<div class="tab-content">
<div class="tab-pane active" id="tab1">
<div class="form-group">
<label class="control-label col-md-1"> 产品型号</label>
<div class="col-md-2">
<input type="text" class="form-control" name="product_ver" value="" id="product_ver"/>
</div>
<label class="control-label col-md-1"> mac</label>
<div class="col-md-2">
<input type="text" class="form-control" name="mac" value="" id="mac"/>
</div>
<label class="control-label col-md-1"> 锁编号</label>
<div class="col-md-2">
<input type="text" class="form-control" name="lock_id" value="" id="lock_id"/>
</div>
<label class="control-label col-md-1">固件版本</label>
<div class="col-md-2">
<select name="firmware_ver" class="form-control" value="" id="firmware_ver">
<option value="0"></option>
<option value="1">正常</option>
<option value="2">锁住</option>
<option value="3">开放</option>
</select>
</div>
</div> <div class="form-group">
<label class="control-label col-md-1">合作企业</label>
<div class="col-md-2">
<select name="corp_id" class="form-control" value="" id="corp_id">
<option value="0"></option>
<option value="1">安居心</option>
<option value="2">国海</option>
</select>
</div>
<label class="control-label col-md-1">是否有猫眼</label>
<div class="col-md-2">
<select name="cat_eya" class="form-control" value="" id="cat_eya">
<option value="0"></option>
<option value="true">有</option>
<option value="false">没有</option> </select>
</div>
<label class="control-label col-md-1"> 用户</label>
<div class="col-md-2">
<input type="text" class="form-control" name="master_id" value="" id="master_id"/>
</div>
<label class="control-label col-md-1">是否有路由器</label>
<div class="col-md-2">
<select name="has_ap" class="form-control" value="" id="has_ap">
<option value="0"></option>
<option value="1">正常</option>
<option value="2">锁住</option>
<option value="3">开放</option>
</select>
</div>
</div>
<div class="info-btn"><button id="submit">查询</button></div>
</div>
</div>
</div>
</div>
<!--</div>-->
</form>
<!--END 搜索-->
<div class="row">
<div class="col-md-12">
<!-- 开始PORTLET示例表-->
<div class="portlet light bordered">
<div class="portlet-body">
<table class="table table-striped table-bordered table-hover dt-responsive" width="100%" id="sample">
<thead>
<tr>
<th>锁编号</th>
<th>锁名称</th>
<th>猫眼</th>
<th>锁类型</th>
<th>MAC</th>
<th>锁地址</th>
<th>报警状态</th>
<th>是否在线</th>
<th>合作企业</th>
<th>产品型号</th>
<th>固件版本</th>
<th>用户</th>
<th>是否有路由器</th>
<th>备注</th>
<th>操作</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
<!-- END PORTLET示例表-->
</div>
</div>
</div>
</div>
<!-- END Portlet PORTLET-->
</div>
</div>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="myModalLabel">修改</h4>
</div>
<div class="modal-body">
<div class="form-group">
<label class="control-label"> 锁编号</label>
<input type="text" class="form-control" id="id" disabled>
</div>
<div class="form-group">
<label class="control-label"> 锁名称</label>
<input type="text" class="form-control" id="name" >
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary" id="save">保存</button>
</div>
</div>
</div>
</div>

js  下面是dataTable配置方式以及参数详解:

$(document).ready(function() {
$("#sample").DataTable({
// Internationalisation. For more info refer to http://datatables.net/manual/i18n
language: {
"aria": {
"sortAscending": ": 以升序排列此列",
"sortDescending": ": 以降序排列此列"
},
"emptyTable": "表中数据为空",
"info": "当前显示第 _START_ 至 _END_ 项,共 _TOTAL_ 项。",
"infoEmpty": "没有发现记录",
"infoFiltered": "(由 _MAX_ 项结果过滤)",
"infoPostFix": "",
"infoThousands": ",",
"lengthMenu": "每页 _MENU_ 项",
"loadingRecords": "载入中...",
"processing": "处理中...",
"paginate": {
"first": "首页",
"previous": "上页",
"next": "下页",
"last": "末页",
},
//"search": "搜索:",
//"url": "",
"zeroRecords": "没有匹配结果"
},
order: [],//取消默认排序查询,否则复选框一列会出现小箭头
bLengthChange:false,
autoWidth:false,//禁用自动调整列宽
stripeClasses: ["odd", "even"],//为奇偶行加上样式,兼容不支持CSS伪类的场合
searching:false,//禁用原生搜索
orderMulti:false,//启用多列排序
renderer:"bootstrap",//渲染样式:Bootstrap和jquery-ui
pagingType:"simple_numbers", //分页样式:simple,simple_numbers,full,full_numbers
ajax: function (data, callback) {
var param = {};
param.limit = data.length;//每页显示多少
param.start = data.start;//开始的记录序号
//console.log(param.limit);
//param.draw = 1;
$.ajax({
type: "POST",
url: "/ajax/lock/list",
//cache: false, //禁用缓存
data: JSON.stringify(param), //传入组装的参数
queryParams:function(params){
var xsrf = $("input[name = '_xsrf']")
if(xsrf != undefined){
params._xsrf = product_ver[0].value;
}
var limit = $("select[name='table-record_length']");
if(limit != undefined){
limit = (limit[0] && limit[0].value) || 20;
params.length = limit;
}
return params
},
dataSrc: function(response){
return response.data;
},
dataType: "json",
success: function (result) {
//console.log(result);
//setTimeout仅为测试延迟效果
setTimeout(function () {
//封装返回数据
var returnData = {};
returnData.draw = data.draw;//这里直接自行返回了draw计数器,应该由后台返回
returnData.recordsTotal = result.recordsTotal;//返回数据全部记录
returnData.recordsFiltered = result.recordsTotal;//后台不实现过滤功能,每次查询均视作全部结果
returnData.data = result.data;//返回的数据列表
//console.log(returnData);
//调用DataTables提供的callback方法,代表数据已封装完成并传回DataTables进行渲染
//此时的数据需确保正确无误,异常判断应在执行此回调前自行处理完毕
callback(returnData);
}, 200);
}
})
},
processing:true,//隐藏加载提示,自行处理
serverSide:true,//启用服务器端分页
bStateSave: true,//配置好这个,刷新页面会让页面停留在之前的页码
columns:[
{ "data": "lock_id","searchable":false,"orderable":true},
{ "data": "name","searchable":false,"orderable":false},
{ "data": "cat_eye", "render":function(data){
switch(data){
case true:
return '有';
case false:
return '没有';
}
}},
{ "data": "type", "render":function(data){
switch(data){
case 0:
return 'F-A';
case 1:
return 'F-B';
default:
return 'F-C'
}
}},
{ "data": "mac","searchable":false,"orderable":false},
{ "data": "province","searchable":false,"orderable":false},
{ "data": "alarm", "render":function(data){
switch(data){
case 0:
return '正常';
case 1:
return '不正常';
}
}},
{ "data": "online", "render":function(data){
switch(data){
case true:
return '在线';
case false:
return '不在线';
}
}},
{ "data": "corp_id", "render":function(data){
switch(data){
case 0:
return '安居心';
case 1:
return '国海';
}
}},
{ "data": "product_ver","searchable":false,"orderable":false},
{ "data": "firmware_ver","searchable":false,"orderable":false},
{ "data": "master_id","searchable":false,"orderable":false},
{ "data": "has_ap", "render":function(data){
switch(data){
case true:
return '有';
case false:
return '没有';
}
}},
{ "data": "descr","searchable":false,"orderable":false},
{
"data": null,
"className": "center",
"defaultContent": '<button type="button" id="editor_edit" data-toggle="modal" class="btn btn-outline btn-circle btn-sm purple">编辑</button> / <button id="editor_remove" class="btn btn-outline btn-circle dark btn-sm black">删除</button>'
}
],
});
//表数据删除
$('#sample').on( 'click', 'button#editor_remove', function (even) {
even.preventDefault;//方法阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交)。
if(confirm("确定删除该信息?") == false){
return;
}else{
var data = $("#sample").DataTable().row( $(this).parents('tr') ).data();
$.ajax({
url: '/ajax/lock/delete',//URL由scheme(协议)、netloc(主机)、path(路径)、params(最后路径的参数)、query(查询字段)、fragment(瞄)组成
type: 'POST',
dataType: 'json',
data: JSON.stringify({
lock_id: data["lock_id"]
}),
success:function(data){
if (data.success == null){
alert('删除成功!');
start = $("#sample").dataTable().fnSettings()._iDisplayStart;//从第几行开始显示数据
total = $("#sample").dataTable().fnSettings().fnRecordsDisplay();//
window.location.reload();
if((total-start) == 1){
if (start > 0) {
$("#sample").dataTable().fnPageChange( 'previous', true);//已回到上一页中 .注意$("#sorting-advanced").dataTable().fnPageChange( 'previous'); 是不行的,必需进行刷新,否则页面中显示的iDisplayStart会从cookie中取得,还是删除前的iDisplayStart
}
}
}
},
error:function(){
console.log(data);
alert('服务器无响应,请联系管理员!');
}
})
}
});
// 数据编辑
$('#sample i').css({"fontStyle":"normal"});
$('#sample').on( 'click', 'button#editor_edit', function (even) {
even.preventDefault;//方法阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交)。
var data = $("#sample").DataTable().row( $(this).parents('tr') ).data();
//清空内容
//$('.col-md-6 input').val('');
// console.log(data);
//弹出层展示
$('#myModal').modal('show')
//$("#myModal").draggable({handle: ".modal-header"});
//填充内容
$('#id').val(data.lock_id);
$('#name').val(data.name);
});
$('#save').on('click',function(){
var lock_id = parseInt($('#id').val());
var name = $('#name').val();
$.ajax({
url:'/ajax/lock/update',
type:'POST',
contentType: "application/json",
timeout : "3000",
cache:false,
data: JSON.stringify({
"lock_id" : lock_id,
"name" : name,
}),
dataType: "json",
success:function(data){
console.log(data);
//弹窗关闭
$('#save').hide();
window.location.reload();
},
error:function(err){
alert("数据刷新失败,请重新刷新");
}
});
}); /* //数据查询
$('.form-horizontal').on("submit", function ( event){
event.preventDefault();
var jsonData = $("form").serializeJSON();
console.log(jsonData); $.post('/ajax/lock/list', params, function(result){ }).success(function(response){
console.log(response);
//do something with the response
})
})*/
}); //数据查询
function onLockSearchSubmit() {
//获取表单数据
var productVerObj = $("[name='product_ver']");
var macObj = $("[name='mac']");
var lockIdObj = $("[name='lock_id']");
var firmwareVerObj = $("[name='firmware_ver']");
var corpIdObj = $("[name='corp_id']");
var catEyeObj = $("[name='cat_eye']");
var masterIdObj = $("[name='master_id']");
var hasApObj = $("[name='has_ap']"); var form = $("form");
form.submit(function () {
return false;
}); var url = "/ajax/lock/list";
var params = {};
if (productVerObj.val() != "") {
params["product_ver"] = productVerObj.val();
}
if(macObj.val() != "") {
params["mac"] = macObj.val();
}
if(lockIdObj.val() > 0) {
params["lock_id"] = lockIdObj.val();
}
if(firmwareVerObj.val() != 0) {
params["firmware_ver"] = firmwareVerObj.val();
}
if(corpIdObj.val() != 0) {
params["corp_id"] = corpIdObj.val();
}
if(catEyeObj.val() != 0) {
params["cat_eye"] = catEyeObj.val();
}
if(masterIdObj.val() != 0) {
params["master_id"] = masterIdObj.val();
}
if(hasApObj.val() != false) {
params["has_ap"] = hasApObj.val();
} params = JSON.stringify(params); $.post(url, params, function(result){
var table_data = JSON.parse(result)["data"];
var table = $("#sample").DataTable();
table.destroy();
$("#sample").empty();
$("#sample").DataTable({
language: {
"aria": {
"sortAscending": ": 以升序排列此列",
"sortDescending": ": 以降序排列此列"
},
"emptyTable": "表中数据为空",
"info": "当前显示第 _START_ 至 _END_ 项,共 _TOTAL_ 项。",
"infoEmpty": "没有发现记录",
"infoFiltered": "(由 _MAX_ 项结果过滤)",
"infoPostFix": "",
"infoThousands": ",",
"lengthMenu": "每页 _MENU_ 项",
"loadingRecords": "载入中...",
"processing": "处理中...",
"paginate": {
"first": "首页",
"previous": "上页",
"next": "下页",
"last": "末页",
},
//"search": "搜索:",
//"url": "",
"zeroRecords": "没有匹配结果"
},
bLengthChange:false,
autoWidth:false,//禁用自动调整列宽
stripeClasses: ["odd", "even"],//为奇偶行加上样式,兼容不支持CSS伪类的场合
searching:false,//禁用原生搜索
orderMulti:false,//启用多列排序
renderer:"bootstrap",//渲染样式:Bootstrap和jquery-ui
pagingType:"simple_numbers", //分页样式:simple,simple_numbers,full,full_numbers
order: [],//取消默认排序查询,否则复选框一列会出现小箭头
data: table_data,
       //表头,有很多种写法可以把这些属性放在一个花括号里面,targets是下标从0开始的
columnDefs: [
{ "title": "锁编号", "targets": 0 },
{ "title": "锁名称", "targets": 1 },
{ "title": "猫眼", "targets": 2 },
{ "title": "锁类型", "targets": 3 },
{ "title": "MAC", "targets": 4 },
{ "title": "锁地址", "targets": 5 },
{ "title": "报警状态", "targets": 6 },
{ "title": "是否在线", "targets": 7 },
{ "title": "合作企业", "targets": 8 },
{ "title": "产品型号", "targets": 9 },
{ "title": "固件版本", "targets": 10 },
{ "title": "用户", "targets": 11 },
{ "title": "是否有路由器", "targets": 12 },
{ "title": "备注", "targets": 13 },
{ "title": "操作", "targets": 14 },
],
columns: [
{ "data": "lock_id","searchable":false,"orderable":true},
{ "data": "name","searchable":false,"orderable":false},
{ "data": "cat_eye", "render":function(data){
switch(data){
case true:
return '有';
case false:
return '没有';
}
}},
{ "data": "type", "render":function(data){
switch(data){
case 0:
return 'F-A';
case 1:
return 'F-B';
default:
return 'F-C'
}
}},
{ "data": "mac","searchable":false,"orderable":false},
{ "data": "province","searchable":false,"orderable":false},
{ "data": "alarm", "render":function(data){
switch(data){
case 0:
return '正常';
case 1:
return '不正常';
}
}},
{ "data": "online", "render":function(data){
switch(data){
case true:
return '在线';
case false:
return '不在线';
}
}},
{ "data": "corp_id", "render":function(data){
switch(data){
case 0:
return '安居心';
case 1:
return '国海';
}
}},
{ "data": "product_ver","searchable":false,"orderable":false},
{ "data": "firmware_ver","searchable":false,"orderable":false},
{ "data": "master_id"},
{ "data": "has_ap", "render":function(data){
switch(data){
case true:
return '有';
case false:
return '没有';
}
}},
{ "data": "descr","searchable":false,"orderable":false},
{
"data": null,
"className": "center",
"defaultContent": '<button type="button" id="editor_edit" data-toggle="modal" class="btn btn-outline btn-circle btn-sm purple">编辑</button> / <button id="editor_remove" class="btn btn-outline btn-circle dark btn-sm black">删除</button>'
}
], })
})
}

  不懂的可以加WX详细聊 TangYR168

DataTable ajax分页+删除+查询+修改的更多相关文章

  1. iptables中增加/删除/查询/修改的基本操作

    虽然在Ubuntu使用了UFW来简化iptables的操作,但是UFW只针对防火墙方面,转发方面没有涉及,所以要弄懂其中的原理,还是必须回归到iptables中.CentOS也是如此.下面是针对ipt ...

  2. 数据库的SQL基本用法 创建 删除 查询 修改

    1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname 3.说明:备份sql server--- 创建 备份数据的 ...

  3. laravel——ajax分页&删除&搜索

    一.视图代码 /*搜索*/<form action="javascript:search_brand()" name="searchForm"> & ...

  4. 10月16日下午MySQL数据库CRUD操作(增加、删除、修改、查询)

    1.MySQL注释语法--,# 2.2.后缀是.sql的文件是数据库查询文件. 3.保存查询. 关闭查询时会弹出提示是否保存,保存的是这段文字,不是表格(只要是执行成功了表格已经建立了).保存以后下次 ...

  5. yii下多条件多表组合查询以及自写ajax分页

    多条件组合查询主要用到yii的CDbCriteria,这个类很多oem框架都有,非常好用. 前台表单 前台查询表单效果是这样的,多个条件组,每个组里放多个input,name为数组.当任何一个复选框被 ...

  6. C#操作Access的查询、添加、删除、修改源程序

    C#操作Access的查询.添加.删除.修改源程序 using System; using System.Collections.Generic; using System.ComponentMode ...

  7. StackExchange.Redis加载Lua脚本进行模糊查询的批量删除和修改

    前言 使用StackExchange.Redis没有直接相关的方法进行模糊查询的批量删除和修改操作,虽然可以通过Scan相关的方法进行模糊查询,例如:HashScan("hashkey&qu ...

  8. springMVC+ajax分页查询

    项目用到ajax技术的查询,查询结果很多时候要分页展示.这两天摸索了一下,在这里做一总结,方便自己随时查看, 也方便后人参考. 这里的顺序遵从从前台页面到后台控制器,业务层,Dao层,Mapper 下 ...

  9. Delphi ADOQuery连接数据库的查询、插入、删除、修改

    http://blog.csdn.net/chinazhd/article/details/45047777 //查询记录 procedure TForm1.Button1Click(Sender: ...

随机推荐

  1. C#开发微信门户及应用(28)--微信“摇一摇·周边”功能的使用和接口的实现

    ”摇一摇周边“是微信提供的一种新的基于位置的连接方式.用户通过“摇一摇”的“周边”页卡,可以与线下商户进行互动,获得商户提供的个性化的服务.微信4月份有一个赠送摇一摇设备的活动,我们有幸获得赠送资格, ...

  2. C语言辗转相除法求2个数的最小公约数

    辗转相除法最大的用途就是用来求两个数的最大公约数. 用(a,b)来表示a和b的最大公约数. 有定理: 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c). (证明过程请参考其它资料) 例 ...

  3. JavaWeb_day02_登录校验_查询所有员工信息_DeBug

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! WEB_day02 servlet 协议转对象 服务器 ...

  4. [示例] Firemonkey TGridLayout & TGridPanelLayout 布局

    说明:使用 TGridLayout & TGridPanelLayout 来布局 源码下载:[示例]TestGridPanelLayout_布局_20161223.zip 展示:

  5. Servlet3.0的可插拔功能

    如果说 3.0 版本新增的注解支持是为了简化 Servlet/ 过滤器 / 监听器的声明,从而使得 web.xml 变为可选配置, 那么新增的可插性 (pluggability) 支持则将 Servl ...

  6. 炫酷的html5(Drag 和 drop)拖放

    在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放.也是一种常见的特性,即抓取对象以后拖到另一个位置. 浏览器支持 Internet Explorer 9.Firefox.Opera 12.C ...

  7. canvas 制作flappy bird(像素小鸟)全流程

    flappy bird制作全流程: 一.前言 像素小鸟这个简单的游戏于2014年在网络上爆红,游戏上线一段时间内appleStore上的下载量一度达到5000万次,风靡一时, 近年来移动web的普及为 ...

  8. MAC OS X El CAPITAN 搭建SPRING MVC (1)- 目录、包名、创建web.xml

    一. 下载STS(Spring Tool Suite) 官方地址:http://spring.io/tools/sts 下载spring tool suite for mac 最新版本.这个IDE是很 ...

  9. tuple放入dict中

    tuple放入dict中是否可以正常运行 # 将tuple放入dict中 a = ('AI','Kobe','Yao') b = ('AI',['Kobe','Yao']) dict1 = {'a': ...

  10. 自动分割mp3等音频视频文件的脚本

    由于种种关系,我需要对一批mp3文件进行分割(切割).每个音频文件大约1小时,需要切成每10分钟1个文件,文件名要带序号.手工分割工作量太大,不符合我等“懒人”的做法.于是找到了大名的”格式工厂“. ...