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 相关文章推荐
让innerHTML的脚本也可以运行起来
Jul 01 Javascript
JavaScript 继承详解(一)
Jul 13 Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
Apr 01 Javascript
JS 操作符整理[推荐收藏]
Nov 15 Javascript
javascript实现简单的二级联动
Mar 19 Javascript
原生JS实现拖拽图片效果
Aug 27 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
Mar 10 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
Aug 01 jQuery
webpack项目轻松混用css module的方法
Jun 12 Javascript
Angular项目如何升级至Angular6步骤全纪录
Sep 03 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
Sep 12 Javascript
简单了解Javscript中兄弟ifream的方法调用
Jun 17 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
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
php include,include_once,require,require_once
2008/09/05 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
javascript 事件处理程序介绍
2012/06/27 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
Bootstrap每天必学之响应式导航、轮播图
2016/04/25 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
AngularJS  自定义指令详解及实例代码
2016/09/14 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
简单了解vue.js数组的常用操作
2019/06/17 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python解析nginx日志文件
2015/05/11 Python
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
Python发展史及网络爬虫
2019/06/19 Python
python脚本后台执行方式
2019/12/21 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
新闻系毕业生推荐信
2013/11/16 职场文书
大学毕业感言一句话
2014/02/06 职场文书
档案室主任岗位职责
2014/02/12 职场文书
cf搞笑广告词
2014/03/14 职场文书
交通事故调解协议书
2014/04/16 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书