关于layui 实现点击按钮添加一行(方法渲染创建的table)


Posted in Javascript onSeptember 29, 2019

目标:layui 实现点击按钮添加一行

解决方案:

方案1、table 是用转换静态表格的方式创建的,写一个button,每次点击按钮,就添加一个<tr> 标签;

方案2、table 是用方法渲染的方式创建的,写一个button,每次点击按钮,加载数据时添加一个Object;

之前我试过用方案1 来实现该功能,发现这个方案,代码量极大,最困难的地方就是在<tr>中加样式,特别是table中有很多种控件时,样式的添加非常麻烦 ,可参见点击打开链接

后选择使用方案2 ,但是遇到了,添加的对象无法通过加载url来渲染t

原来的数据表格使用方法渲染的方法传的值,其数据是从url中取出,

发现layui的url传值方式,数据格式必须为:

{"code":0,"msg":"","count":4,"data":[{"colName":"ID","colNo":0,"collator":"","comments":"","dbId":1,"defVal":"","deleted":"","dispersion":0,"domainId":0,"histogram":"","isHide":"","isSerial":"F","isVirtual":"","maxVal":"","minVal":"","notNull":"T","repetRate":0,"scale":-1,"serialId":0,"tableId":1048586,"timestampT":" ","typeName":"INTEGER","varying":"F","vcolNo":0,"vertNo":0}]}

而我在reload方法中存放的data数据格式为

[{"colName":"ID1","colNo":0,"collator":"","comments":"","dbId":1,"defVal":"","deleted":"","dispersion":0,"domainId":0,"histogram":"","isHide":"","isSerial":"F","isVirtual":"","maxVal":"","minVal":"","notNull":"T","repetRate":0,"scale":-1,"serialId":0,"tableId":1048586,"timestampT":" ","typeName":"INTEGER","varying":"F","vcolNo":0,"vertNo":0}]

因此,解决方案:

1、将新增的data格式修改为url返回的格式,失败;

2、将url的返回值,以data的array格式返回,并作为变量传给data;成功。

全部方法如下:

首先:用ajax请求将数据取出存于变量,将变量赋值给table的data

var tableData=new Array(); // 用于存放表格数据
$.ajax({
   url: "${ctp}/TableOperate/GetColsInfo?tabId=1048586&dbId=1"
   ,type:"get"
   ,async:false
   ,dataType:"json"
   , success: function(result){
    tableData=result;
   console.log(result);
   }
  });
table.render({
   elem: '#baseInfo'
   ,data:tableData
   ,cols: [[
   {title : '序号',type:'numbers',Width: 20}
   /* ,{field:'tableId' , title:'tableId' }
    ,{field:'dbId'  , title:'dbId' } */
    ,{field:'colNo' , title:'colNo' , sort: true}
    ,{field:'domainId' , title:'domainId', minWidth: 120, templet: '#switchTpl', unresize: true }
    ,{field:'colName' , title:'colName' , minWidth: 120, sort: true   , edit: 'text'}
    ,{field:'typeName' , title:'typeName', minWidth: 120, sort: true ,templet: '#selectTpl'}
    ,{field:'scale' , title:'scale' , minWidth: 80, edit: 'text'}
    ,{field:'notNull' , title:'notNull' , minWidth: 100, templet: '#switchNullTpl', unresize: true}
    ]]
   ,page: { //支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档
   layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'] //自定义分页布局
   ,curr: 1 //设定初始在第 1 页
   ,groups: 1 //只显示 1 个连续页码
   ,first: false //不显示首页
   ,last: false //不显示尾页
   }
   , done: function(res, curr, count){
    }
 
  });

最后,调用按钮的点击方法

//点击加号按钮时,新添一行
  $("#addTable").click(function(){
   var oldData = table.cache["baseInfo"];
   var data1={"colName":"ID2","colNo":0,"collator":"","comments":"","dbId":1,"defVal":"","deleted":"","dispersion":0,"domainId":0,"histogram":"","isHide":"","isSerial":"F","isVirtual":"","maxVal":"","minVal":"","notNull":"T","repetRate":0,"scale":-1,"serialId":0,"tableId":1048586,"timestampT":" ","typeName":"INTEGER","varying":"F","vcolNo":0,"vertNo":0};
   oldData.push(data1);
   table.reload('baseInfo',{
    data : oldData
   });
  });

效果如图所示:

关于layui 实现点击按钮添加一行(方法渲染创建的table)

以上这篇关于layui 实现点击按钮添加一行(方法渲染创建的table)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
document.open() 与 document.write()的区别
Aug 13 Javascript
javascript instanceof 与typeof使用说明
Jan 11 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
Jun 25 Javascript
jquery事件与函数的使用介绍
Sep 29 Javascript
jquery实现全屏滚动
Dec 28 Javascript
一步步教大家编写酷炫的导航栏js+css实现
Mar 14 Javascript
原生JS实现的放大镜效果实例代码
Oct 15 Javascript
JS 循环li添加点击事件 (闭包的应用)
Dec 10 Javascript
Bootstrap 网格系统布局详解
Mar 19 Javascript
JS正则表达式常见用法实例详解
Jun 19 Javascript
jQuery使用each遍历循环的方法
Sep 19 jQuery
详解Vue中的scoped及穿透方法
Apr 18 Javascript
在Layui中实现开关按钮的效果实例
Sep 29 #Javascript
layui之数据表格--与后台交互获取数据的方法
Sep 29 #Javascript
20多个小事例带你重温ES10新特性(小结)
Sep 29 #Javascript
解决layui页面按钮点击无反应,也不报错的问题
Sep 29 #Javascript
react用Redux中央仓库实现一个todolist
Sep 29 #Javascript
layui数据表格 table.render 报错的解决方法
Sep 29 #Javascript
JavaScript实现秒杀时钟倒计时
Sep 29 #Javascript
You might like
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
CURL状态码列表(详细)
2013/06/27 PHP
php $_SERVER windows系统与linux系统下的区别说明
2014/02/14 PHP
Drupal7 form表单二次开发要点与实例
2014/03/02 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
Yii不依赖Model的表单生成器用法实例
2014/12/04 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
PHP登录验证码的实现与使用方法
2016/07/07 PHP
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
javascript使用switch case实现动态改变超级链接文字及地址
2014/12/16 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
python实现感知机模型的示例
2020/09/30 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
简历上的自我评价
2014/02/03 职场文书
法学院毕业生求职信
2014/06/25 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
MATLAB 如何求取离散点的曲率最大值
2021/04/16 Python
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python