关于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 相关文章推荐
完整显示当前日期和时间的JS代码
Sep 17 Javascript
jquery中load方法的用法及注意事项说明
Feb 22 Javascript
JS中的构造函数详细解析
Mar 10 Javascript
js 获取浏览器版本以此来调整CSS的样式
Jun 03 Javascript
javascript数组操作方法小结和3个属性详细介绍
Jul 05 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
Nov 04 Javascript
jQuery中prevAll()方法用法实例
Jan 08 Javascript
JS实现仿QQ聊天窗口抖动特效
May 10 Javascript
EditPlus中的正则表达式 实战(4)
Dec 15 Javascript
vuejs实现本地数据的筛选分页功能思路详解
Nov 15 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
Jun 01 Javascript
VUE : vue-cli中去掉路由中的井号#操作
Sep 04 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
[原创]效率较高的php下读取文本文件的代码
2008/07/02 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
php数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
javascript 变量作用域 代码分析
2009/06/26 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
2011/07/11 Javascript
js获取图片宽高的方法
2015/11/25 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
2016/11/27 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
Vue组件开发初探
2017/02/14 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
layer.confirm点击第一个按钮关闭弹出框的方法
2019/09/09 Javascript
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
Win7上搭建Cocos2d-x 3.1.1开发环境
2014/07/03 Python
python实现合并两个排序的链表
2019/03/03 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
python打包成so文件过程解析
2019/09/28 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
CK美国官网:Calvin Klein
2016/08/26 全球购物
18岁生日感言
2014/01/12 职场文书
法律专业求职信
2014/05/24 职场文书
幼儿园标语大全
2014/06/19 职场文书
经典毕业生求职信
2014/07/12 职场文书
祖国在我心中演讲稿450字
2014/09/05 职场文书
2015年中学校长工作总结
2015/05/19 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
手写实现JS中的new
2021/11/07 Javascript
Python内置的数据类型及使用方法
2022/04/13 Python
利用Redis实现点赞功能的示例代码
2022/06/28 Redis