layui table表格数据的新增,修改,删除,查询,双击获取行数据方式


Posted in Javascript onNovember 14, 2019

layui table利用参数新增,修改,删除,查询,双击数据行获取本行数据等。模块化使用layui table表格,通过二次封装实现语法上的解耦使用layui table,使用参数就可以以及外部的方法调用即可实现对layui table表格的操作,通过封装,把更多自主权交给页面自定义,layui:v:2.3.0。感谢layui的作者贤心。

演示效果如下:

layui table表格数据的新增,修改,删除,查询,双击获取行数据方式

以上json显示不完整是录屏的原因,请见谅!

var Table = function(ops){
  this.dataList = [];
  this.table = {};
  this.tid = ops.id;
}
Table.prototype = {
  getRowItemById: function (id) {
    var _item = null;
    var list = this.dataList
    for (var i = 0; i < list.length; i++) {
      var item = list[i];
      item.id == id ? _item = item : ''
      break;
    }
    return _item;
  },
  deleteRowItem: function (id) {
    var list = this.dataList;
    for (var i = list.length - 1; i >= 0; i--) {
      if (list[i].id == id) {
        list.splice(i, 1);
      }
    }
    this.reloadTable();
  },
  updateRowItem: function (item,key,callback) {
    var id = item[key]; //item:ajax获取的json; key:用于自定义标示数据行的flag,唯一;
    var idkey = this.idkey;
    var tid = this.tid;
    var arr = this.dataList;
 
    for(var ii =0;ii<arr.length;ii++){
      var _arr = arr[ii];
      var index = ii;
      if(_arr[idkey] == id){
        arr[index] = item;
        var $div = $("#"+tid).next()
        var $tr = $div.find('.layui-table-body table.layui-table').find('tr').eq(index);
        var $tds = $tr.find('td');
        for(var i =0;i<$tds.length;i++){
          var $td = $tds.eq(i);
          var $field = $td.attr('data-field');
          var $itemValue = item[$field];
          var $tdValue = $td.find('div').html();
          if($itemValue!=$tdValue){
            $td.find('div').html($itemValue);
          }
        }
        continue;
      }
    }
    if (callback) {
      callback(item)
    }
  },
  dbClickTableItem: function (callback) {
  },
  addRowItem: function (item) {
    var list = this.dataList;
    list.unshift(item);
    this.reloadTable();
  },
  reloadTable: function (callback) {
    var list = this.dataList;
    this.table.reload(this.tid, {
      data: list
    });
  },
  clearTable: function () {
    this.dataList = [];
    this.reloadTable();
  },
  rederTable: function (ops, callback) {
    this.table.render(ops);
 
    typeof callback == 'function' ? callback() : '';
  },
  initialize: function (callback) {
    var _ = this;
    layui.use('table', function () {
      var table = layui.table;
      _.table = table;
      typeof callback == 'function' ? callback(_.table) : '';
    })
  },
  bindRowDBclick: function (el, callback) {
    var _this = this;
    var $d = $('body');
    $d.on('dblclick', "tbody tr", function (e) {
      var target = e;
      var $index = $(this).index();
      var $tr = $(el).next().find("tbody tr")[$index];
      if (this == $tr) {
        var list = _this.dataList;
        var rowData = list[$index];
        callback(target, list, rowData)
      } else {
        console.error('Illegal operation without registration\n' +
          '\n')
      }
    })
 
  }
 
}

如何使用:

var table = new Table({id:'mo_table'});
 
table.initialize(function(tableObj){
  var col = [
    /*{type:'checkbox',width:80},
    {title: '账号', field: 'account'},
    {title: '姓名', field: 'name'},
    {title: '性别', field: 'sexName'},
    {title: '角色', field: 'roleName'},
    {title: '部门', field: 'deptName'},
    {title: '邮箱', field: 'email',event: 'setSign', style:'cursor: pointer;'},
    {title: '电话', field: 'phone'},
    {title: '创建时间', field: 'createtime',sort: true},
    {title: '状态', field: 'statusName'},
    {title: '操作', toolbar:'#cellHandle'}*/
  ]
  var ops = {
    elem: '#mo_table'//自定义dom
    ,id:'mo_table'
    ,data: []
    ,cols: [col]
    ,page: true
    ,height: 200
  }
  table.rederTable(ops,function () {
    var row = {
      "birthday":"2018-08-14 08:00:00",
      "deptName":"陕西省",
      "createtime":"2018-08-22 16:14:33",
      "roleid":"6",
      "sex":1,
      "deptid":25,
      "phone":"15822256985",
      "sexName":"男",
      "name":"测试二",
      "roleName":"代理商管理员",
      "statusName":"启用",
      "id":94,
      "vehicleId":94,
      "account":"ceshi2",
      "email":"524585857@qq.com",
      "status":1,
      "longitude":'108',
      "latitude":'38'
    }
    table.addRowItem(row)
 
 
 
    table.bindRowDBclick(
      '#mo_table',
      function (evt,list,rowData) {
        layer.msg(JSON.stringify(rowData))
        //doanything here //双击行的回调
 
      })
  });
 
})
 
//data为行数据json
table.updateRowItem(data,"id",function(data){
   //默认更新完的回调
});

代码仅供参考,涉及到代码质量问题请忽略,这只是一个实现的思路。如需扩展其他方法,你可以在原型中添加即可。

以上这篇layui table表格数据的新增,修改,删除,查询,双击获取行数据方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 圆角div的实现代码
Oct 15 Javascript
js parentElement和offsetParent之间的区别
Mar 23 Javascript
js批量设置样式的三种方法不推荐使用with
Feb 25 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
Jun 25 Javascript
jQuery基于当前元素进行下一步的遍历
May 20 Javascript
加载列表时jquery获取ul中第一个li的属性
Nov 02 Javascript
jQuery中offset()方法用法实例
Jan 16 Javascript
基于JavaScript实现动态创建表格和增加表格行数
Dec 20 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
Jan 13 Javascript
AngularJS使用ng-class动态增减class样式的方法示例
May 18 Javascript
html中通过JS获取JSON数据并加载的方法
Nov 30 Javascript
浅谈webpack对样式的处理
Jan 05 Javascript
解决Layui数据表格显示无数据提示的问题
Nov 14 #Javascript
layui写后台表格思路和赋值用法详解
Nov 14 #Javascript
Layui实现主窗口和Iframe层参数传递
Nov 14 #Javascript
layui 弹出层值回传解决方式
Nov 14 #Javascript
vue使用swiper.js重叠轮播组建样式
Nov 14 #Javascript
Vue中常用rules校验规则(实例代码)
Nov 14 #Javascript
浅析Vue 防抖与节流的使用
Nov 14 #Javascript
You might like
怎样才能成为PHP高手?学会“懒惰”的编程
2006/12/05 PHP
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
用PHP书写安全的脚本代码
2012/02/05 PHP
PHP+JQuery+Ajax实现分页方法详解
2016/08/06 PHP
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
JavaScript正则表达式的分组匹配详解
2016/02/13 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
使用Python脚本操作MongoDB的教程
2015/04/16 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
python八皇后问题的解决方法
2018/09/27 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
pytorch简介
2020/11/11 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
Python字符串的15个基本操作(小结)
2021/02/03 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
文明学生标兵事迹
2014/01/21 职场文书
优秀社区干部事迹材料
2014/02/03 职场文书
初中班主任评语大全
2014/04/24 职场文书
教师考核材料
2014/05/21 职场文书
十周年庆典策划方案
2014/06/03 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
java设计模式--原型模式详解
2021/07/21 Java/Android
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android
源码安装apache脚本部署过程详解
2022/09/23 Servers