关于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 相关文章推荐
json简单介绍
Jun 10 Javascript
js判断样式className同时增加class或删除class
Jan 30 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
May 07 Javascript
jquery插件EasyUI中form表单提交实例分享
Jan 11 Javascript
BootStrap fileinput.js文件上传组件实例代码
Feb 20 Javascript
Bootstrap入门教程一Hello Bootstrap初识
Mar 02 Javascript
AngularJS的ng-click传参的方法
Jun 19 Javascript
vue.js实现备忘录功能的方法
Jul 10 Javascript
node.js 发布订阅模式的实例
Sep 10 Javascript
微信小程序实现倒计时调用相机自动拍照功能
Jun 10 Javascript
详解如何写出一个利于扩展的vue路由配置
May 16 Javascript
vue实现绑定事件的方法实例代码详解
Jun 20 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
一个MYSQL操作类
2006/11/16 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
模拟jQuery中的ready方法及实现按需加载css,js实例代码
2013/09/27 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
详解javascript中的事件处理
2015/11/06 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
JavaScript模块模式实例详解
2017/10/25 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
详解webpack自定义loader初探
2018/08/29 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
js仿360开机效果
2019/12/26 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
Python实现图片滑动式验证识别方法
2017/11/09 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
python调用百度语音REST API
2018/08/30 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
c/c++某大公司的两道笔试题
2014/02/02 面试题
计算机专业个人求职信范例
2013/09/23 职场文书
幼儿园园长岗位职责
2013/11/26 职场文书
领导干部考察材料
2014/02/08 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
员工试用期工作总结
2019/06/20 职场文书
python基础之文件操作
2021/10/24 Python