datatables完整的增删改查

2023-10-26

1、需要指定datatables的ID

1 <button class="btn  btn-primary" id="newAttribute">新增证照属性</button>
2 <table class="table table-striped table-bordered table-hover dataTable myTable" id="newAttributeTable" width="100%" role="grid"   aria-describedby="editable_info">
3 </table>

2、初始化datatables

复制代码

<script type="text/javascript">
$(function() {
//初始化证照属性设置表
initnewAttributeTable();
});

//证照属性设置表

function initnewAttributeTable() {
var table = $('#newAttributeTable').dataTable({
"paging": false, //翻页
    //"bPaginate" : true,      //显示分页器
    //"iDisplayLength":28,
"ordering": false,
"searching": false, //搜索框
    //"bLengthChange":true,//改变每行显示数据数量
    //"aLengthMenu": [[10, 30, 50, -1], [10, 30, 50, "All"]],
"bInfo": false, //页脚
'bStateSave': true,
"bAutoWidth":false,
"bSort": true,
"processing": false,
"serverSide": false,
"sServerMethod": "get", //post
"bDestroy": true,
"ajax": {
"url": encodeURI("${pageContext.request.contextPath}/ajax/certificate/getCertificateTypeList"),
//"dataSrc": "data",//默认为data
"type": "get",
"error": function () {
      }
    },
"columns": [{
"data": null,
"title": "序号",
"sWidth":"30px",
"sClass": "text-tables-center",
"createdCell": function (nTd, sData, oData, iRow, iCol) {
var startnum = this.api().page() * (this.api().page.info().length);
$(nTd).html(iRow + 1 + startnum); //分页行号累加:$(nTd).html(iRow+1);
}
    }, {
"data": "typeName",
"title": "证照属性设置"
},{
"data": null,
"title": "操作"
}],
"columnDefs": [
      {
"targets": [1],
"data": "typeName",
"render": function (data, type, row) {
//isLockStatus:true:显示有锁   false:显示没有锁
if(row.isLockStatus ==true){
return ""+row.typeName+"&nbsp;&nbsp;<i class='fa fa-lock l-fa' style='cursor: pointer'></i>";
}else{
return row.typeName;
}
        }
      },
{
"targets": [2],
"data": "id",
"sWidth":"60px",
"sClass": "text-tables-center",
"render": function (data, type, row) {
var id=  row.id ==undefined ? -1:row.id ;//-1说明是新增,其余表示为编辑
if(row.isLockStatus ==true){
return "-";
}else{
return "<i class='fa fa-pencil l-fa edit-btn' style='cursor: pointer' id=\'" + id + "\'></i>&nbsp;&nbsp;<i class='fa fa-trash-o m-fa del-btn' style='cursor: pointer' id=\'" + id + "\'></i>";
}
      }
    }, {
sDefaultContent: '',
aTargets: ['_all']
    }]
  });

//新增一行表格
$("#newAttribute").unbind('click').click(function () {
if ($("#newAttributeTable tbody tr:last td i").eq(0).attr('id') == -1) {
return;
}
$('#newAttributeTable').dataTable().fnAddData([]);
var nTrsLength = $("#newAttributeTable tbody tr").length;
var nTrs = $("#newAttributeTable tbody tr").eq(nTrsLength - 1);
var nIs = nTrs.find("td").eq(2).find("i").eq(0)
      nIs.click();
});
//点击编辑图标出现编辑框
$("#newAttributeTable tbody").unbind('click').on("click", ".edit-btn", function () {
var tds = $(this).parents("tr").children();
var i;
$.each(tds, function (i, val) {
var jqob = $(val);
var txt = jqob.text();
if (i == 1) {
var put = $("<input type='text' class='form-control' style='width:100%'>");
put.val(txt);
jqob.html(put);
}
      });
$(this).toggleClass("edit-btn fa-pencil");
$(this).toggleClass("save-btn fa-save");
});
//保存按钮
$("#newAttributeTable tbody").on("click", ".save-btn", function () {
var id =$(this).attr("id");
var tds = $(this).parents("tr").children();
var sTds = tds.length;
var lisval = [];
for (var i = 0; i < sTds; i++) {
if (i < sTds - 1)
          lisval.push(tds.eq(i).children("input").val());
else lisval.push(tds.eq(i).children("input").val())
      }
if (i == sTds - 1) lisval.push();
if (lisval[1] == "") {
toNotification("警告!", "证照属性设置不能为空!", "warning");
return false;
} else if(lisval[1].length >10){
toNotification("警告!", "证照属性设置不能超过十个字符!", "warning");
return false;
}else {
$.each(tds, function (i, val) {
var jqob = $(val);
//把input变为字符串
if (!jqob.has('i').length) {
var txt = jqob.children("input").val();
jqob.html(txt);
}
         });
$(this).toggleClass("edit-btn fa-pencil");
$(this).toggleClass("save-btn fa-save");
//保存数据
SaveData(lisval[1],id);
}
    });

//证照属性设置保存信息
function SaveData(msg,id){
var data ={
id: id,   //-1表示是新增
typeName: msg
    }
var  url  = encodeURI("${pageContext.request.contextPath}/ajax/certificate/saveCertificateType");
actionRequest(data,url,function(data){
if (data.successed) {
toNotification("提示!","操作成功!", "success");
//刷新表格
initnewAttributeTable();
}else {
toNotification("操作失败!", data.message, "error");
//刷新表格
initnewAttributeTable();
}
    });
}

//证照属性设置删除
$("#newAttributeTable tbody").on("click", ".del-btn", function () {
var id =$(this).attr("id");
if (id==-1) {
var trs = $(this).parents("tr");
initnewAttributeTable();
return false;
}else{
var tds = $(this).parents("tr").children();
var data = {id: id };
var url="/ajax/certificate/deleteCertificateType";
//执行删除
toConfirm(data,url,function(data){
if (data.successed) {
swal({
title: "删除成功",
text: "<small>1秒后自动关闭<small>",
type: "success",
html: true,
timer: 1000
});
initnewAttributeTable();
} else {
swal("删除失败!", data.message, "error");
}
        });
}
    });
}
//获得标识
function getActionId() {
return new Date().getTime();
} 
</script >

复制代码

3、最终效果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

datatables完整的增删改查 的相关文章

随机推荐

  • Unity中协程与线程的区别

    本文转载自 https blog csdn net qq 25122429 article details 80481443 协同程序 coroutine 与多线程情况下的线程比较类似 有自己的堆栈 自己的局部变量 有自己的指令指针 IP
  • 【编程之路】面试必刷TOP101:贪心算法(95-96,Python实现)

    面试必刷TOP101 贪心算法 95 96 Python实现 95 分糖果问题 小试牛刀 95 1 贪心思想 要想分出最少的糖果 利用贪心思想 肯定是相邻位置没有增加的情况下 大家都分到1 相邻位置有增加的情况下 分到糖果数加1就好 什么情
  • Java-内部类

    Java 内部类 1 概念 Java中允许将一个类A声明在另外一个类B中 则类A就是内部类 类B 就称为外部类 内部类的分类 成员内部类 一方面作为外部类的成员 可以调用外部类的结构 可以被static修饰 可以被四种不同的权限修饰符 pu
  • 在手机上运行Python--安卓linux终端Termux

    今天突发奇想 想找一种在手机上运行Python的工具 于是发现了这个安卓端的linux终端 Termux 可以在手机上实现一个微型的linux终端 网上已经有不少教程了 我在这里做一下汇总 1 安装Python以及常用的package nu
  • Python+OpenCV3简单手势识别

    文章目录 安装相关库 原理简述 代码 效果实现 今天教大家一个有趣的玩法 如何利用Python opencv3实现简单的手势识别 当然网上也有相关教程 但绝大多数给出的代码拿来之后你是不能直接用的 这对于拿来主义的同学来说简直太 禽兽 了
  • python rpy2_Python&R语言-rpy2使用示例

    前言 Python编程灵活方便 R的模型方法众多 如何将两者结合起来 发挥更大的作用 值得探索 Python可以直接调用R的函数 R是开源项目 肯定会有一些第三方库实现Python与R互通 需要在python中调用R 实在是一种无奈的选择
  • vue3+TSX+element-plus(DateTimePicker)做一个时间范围选择器

    element plus包括element ui支持时间范围选择 把type指定成datetimerange就行了 但是它不支持单个选择 也许unlink panels这个配置有用 但我是用TSX写的 传了个true进去没用 怎么试都不行
  • 20张图带你了解JVM运行时数据区(上)

    我们的JVM系列已经断更好几天了 小伙伴们在后台疯狂私信阿Q 想看后续内容 今天它来了 相信大家在上篇文章中已经对类加载子系统有了清晰的认识 接下来就让我们来揭开 运行时数据区 的神秘面纱吧 运行时数据区总览 内存是非常重要的系统资源 是硬
  • GC overhead limit exceeded问题

    Java运行时环境内置了 垃圾收集 GC 模块 上一代的很多编程语言中并没有自动内存回收机制 需要程序员手工编写代码来进行内存分配和释放 以重复利用堆内存 在Java程序中 只需要关心内存分配就行 如果某块内存不再使用 垃圾收集 Garba
  • vue watermark水印添加

    vue 水印实现 Vue项目在页面添加水印功能 不允许操作dom关闭水印 1 添加watermark dom插件 npm i watermark dom save 引用 watermark dom import watermark from
  • lsqcurvefit函数的基本用法

    本文讲解lsqcurvefit函数的基本用法 一 lsqcurvefit函数的简单使用格式 x lsqcurvefit fun x0 xdata ydata x resnorm lsqcurvefit fun x0 xdata ydata
  • 线程安全性的基本概念

    线程安全性 我们总是说要编写线程安全的代码 有时候也会讨论某个类是不是线程安全的 那到底什么是线程安全性呢 网上有很多说法 可以被多个线程调用 并且线程之间不会出现错误的交互 多个线程调用时 不需要做额外的动作等等 但这话 明明什么都说了
  • 力扣刷题-128.最长连续序列、并查集

    一 并查集 顾名思义 并 就是合并 查 就是查找 集 就是集合 并查集是一种树形的数据结构 支持以下两种操作 查找 确定某个元素处于哪个子集 合并 将两个子集合并成一个集合 初始化 集合就是一些具有相同特征的元素构成的圈子 然后用其中某个元
  • vue3中定义的对象再次赋值,页面不会自动更新解决方法

    第一种方法 将reactive换成ref 即可实现页面随时刷新 export default components HelloWorld name App setup let person ref const getPerson data
  • Umi 内使用mock

    在mock文件夹下创建stu js 在mock文件夹下创建stu js 代码如下 利用mock js库 增强mock数据能力 首先先安装 yarn add mockjs 或者 npm i mockjs
  • 【整理九】

    目录 1 说说你对递归的理解 封装一个方法用递归实现树形结构封装 2 Link和 import有什么区别 3 什么是FOUC 如何避免 4 说说你对预编译器的理解 5 shouldComponentUpdate 的作用 6 概述下 Reac
  • 计算机2.0培训心得,2020信息技术2.0培训心得

    时代的车轮滚滚 把我们带到信息高速路 信息技术迅猛发展令我们猝不及防 也惊喜万分 它渗透到社会生活角角落落 校园更是如此 传统教育教学模式 教学方式和教学手段等统统被打破 我们甚至措手不及 今年 我幸运参加2020年年底为期7天的中小学信息
  • Typora自定义命令上传图片到服务器

    Typora自定义命令上传图片到服务器 缘由 因为平时喜欢用Typora写文档 markdown也比较方便复制到各个网站上去展示 但是markdown复制的文件之前一直都是保存在本地 md文件复制给别人或者复制到其他博客上会导致图片找不到或
  • 6.9行为型---访问者模式

    在现实生活中 有些集合对象中存在多种不同的元素 且每种元素也存在多种不同的访问者和处理方式 例如 公园中存在多个景点 也存在多个游客 不同的游客对同一个景点的评价可能不同 医院医生开的处方单中包含多种药元素 査看它的划价员和药房工作人员对它
  • datatables完整的增删改查

    1 需要指定datatables的ID 1