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检查弹出窗口是否被阻拦的方法技巧
Mar 13 Javascript
深入探讨javascript函数式编程
Oct 11 Javascript
深入解析JavaScript编程中的this关键字使用
Nov 09 Javascript
jQuery插件实现文字无缝向上滚动效果代码
Feb 25 Javascript
javascript中call apply 与 bind方法详解
Mar 10 Javascript
jQuery webuploader分片上传大文件
Nov 07 Javascript
JavaScript箭头(arrow)函数详解
Jun 04 Javascript
老生常谈js中的MVC
Jul 25 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
Aug 15 Javascript
Vue-cli创建项目从单页面到多页面的方法
Sep 20 Javascript
搭建element-ui的Vue前端工程操作实例
Feb 23 Javascript
微信小程序实现列表左右滑动
Nov 19 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
BBS(php &amp; mysql)完整版(五)
2006/10/09 PHP
php使用正则表达式获取图片url的方法
2015/01/16 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
JavaScript 函数式编程的原理
2009/10/16 Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
2015/06/04 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
jQuery检测滚动条是否到达底部
2015/12/15 Javascript
网页中JS函数自动执行常用三种方法
2016/03/30 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
bootstrap table小案例
2016/10/21 Javascript
使用 bootstrap modal遇到的问题小结
2016/11/09 Javascript
javascript表单正则应用
2017/02/04 Javascript
Jquery EasyUI $.Parser
2017/06/02 jQuery
JS实现图片居中悬浮效果
2017/12/25 Javascript
jQuery+ajax读取json数据并按照价格排序示例
2018/03/28 jQuery
JavaScript创建对象方法实例小结
2018/09/03 Javascript
微信小程序如何获取手机验证码
2018/11/04 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
selenium+python环境配置教程详解
2019/05/28 Python
Django外键(ForeignKey)操作以及related_name的作用详解
2019/07/29 Python
Python sys模块常用方法解析
2020/02/20 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
如何使用Python进行PDF图片识别OCR
2021/01/22 Python
HTML5 audio标签使用js进行播放控制实例
2015/04/24 HTML / CSS
Joules美国官网:出色的英国风格
2017/10/30 全球购物
大四本科生的自我评价
2013/12/30 职场文书
电话客服专员岗位职责
2014/06/28 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
MySQL系列之十二 备份与恢复
2021/07/02 MySQL
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js