Layui给数据表格动态添加一行并跳转到添加行所在页的方法


Posted in Javascript onAugust 20, 2018

Layui是一个前端 UI 框架,该框架风格优雅,但由于发布时间较短,很多功能并没有提供实现。

笔者在使用Layui的数据表格的时候,需求是这样的:当点击添加按钮的时候,就在数据表格最后动态添加一行。上述功能官方并没有给出实现,需要自己手动解决。

解决思路及方案

简单分析:根据需求——动态添加一行,首先想到的是利用JS/jQuery操作DOM对象实现在数据表格table中手动添加一个tr,但由于数据表格的每一行的每一个单元格都有其样式,因此,要想动态添加的一行与Layui数据表格渲染出来的每一行样式及功能一样,就必须给tr设置和渲染出来的每一行一样的样式,利用jQuery去完成这个添加这样一个tr工程量实在太大了,因此需要换一种方案。

数据表格中的原始数据:查看Layui官方文档,采用方法渲染或者自动渲染的方式去生成数据表格时,数据表格中的数据是通过直接赋值的方式或者异步加载的方式获得原始的数据。

直接赋值方式原始的数据其实就是一个对象数组,如[{}, {}, {}, {}, …]。

异步加载方式原始的数据发请求从后端取,然后后端返回给前端的一个json对象,这里要求后端返回给前端的json对象要符合Layui数据表格能渲染的格式,Layui数据表格默认支持的后端返回给前端的json对象格式如下,各个属性具体描叙参照官方文档:

{
  code: 0, 
  msg: "", 
  count: 1000, 
  data: [] 
 }

数据表格的重载:数据表格重载可以将新拿到的原始数据重新渲染到数据表格中,Layui提供的是方法是table.reload(ID, options)

ID:table的id属性值

options:为Layui数据表格的基础参数,具体参照官方文档

下面给出针对原始数据是通过直接赋值的方式、采用方法渲染的数据表格动态添加一行的思路及解决方法

思路:通过上述讲解,动态添加一行其实可以转换为:

拿到数据表格中的所有数据后,也就是拿到一个对象数组,在那个对象数组最后添加一个与拿到的对象数组中对象相同、但其所有属性的属性值为空的一个空对象。(那数据表格中所有数据可参照我的另一篇Layui数据表格之获取表格中所有的数据)

利用table.reload(ID, options)方法将添加了一个“空对象”的数组重新加载渲染到数据表格即可。

跳转到动态添加行所在页,只要设置table.reload(ID, options)中options的page基础参数即可,将page参数的curr属性值设置为动态添加行所在页页码(页码根据数据表格每页显示的记录数以及添加了一行后数据表格中总的记录数自己算)即可。2、3步代码如下():

//获取每页显示的记录数、当前记录总数,计算新添加的记录在第几页
var totalRecord = tableContent.length;
var pageSize = $(".layui-laypage-limits").find("select").val();
if($.type(pageSize) == "string"){
 pageSize = parseInt(pageSize);
}

var currPageNo = Math.ceil(totalRecord / pageSize);
console.log("每页显示的记录数:"+pageSize+" 类型:"+$.type(pageSize)+" 总的记录数:"+totalRecord+" 类型:"+$.type(totalRecord)
  +" 新增行所在页码:"+currPageNo+" 类型:"+$.type(currPageNo));

// 重载表格并跳转到最后修改或者添加数据的那一页
table.reload('viewTable', {
  page : {
   curr : currPageNo
  },
  data : tableContent
});

最终效果图:

动态添加一行前(请将图片保存到本地查看大图)

Layui给数据表格动态添加一行并跳转到添加行所在页的方法

动态添加一行后(请将图片保存到本地查看大图)

Layui给数据表格动态添加一行并跳转到添加行所在页的方法

以上这篇Layui给数据表格动态添加一行并跳转到添加行所在页的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javacript实现颜色梯度变化和渐变的效果代码
May 31 Javascript
jQuery阻止事件冒泡具体实现
Oct 11 Javascript
jquery 实现两级导航菜单附效果图
Mar 07 Javascript
javaScript中with函数用法实例分析
Jun 08 Javascript
jQuery实现类似标签风格的导航菜单效果代码
Aug 25 Javascript
JS实现三个层重叠点击互相切换的方法
Oct 06 Javascript
微信小程序组件之srcoll-view的详解
Oct 19 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
Jun 19 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
Mar 06 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
Sep 02 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
Jan 07 Vue.js
JavaScript声明变量和数据类型的转换
Apr 12 Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
Aug 20 #Javascript
获取layer.open弹出层的返回值方法
Aug 20 #Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 #Javascript
layui弹出层按钮提交iframe表单的方法
Aug 20 #Javascript
详解如何在Vue里建立长按指令
Aug 20 #Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
Aug 20 #Javascript
Angular6 写一个简单的Select组件示例
Aug 20 #Javascript
You might like
php获取发送给用户的header信息的方法
2015/03/16 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
一句话JavaScript表单验证代码
2009/08/02 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
简单谈谈gulp-changed插件
2017/02/21 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
详解Vue.directive 自定义指令
2019/03/27 Javascript
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
python中List的sort方法指南
2014/09/01 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
Pytorch之Variable的用法
2019/12/31 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
国际书籍零售商:Wordery
2017/11/01 全球购物
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
C#中的验证控件有几种
2014/03/08 面试题
教师应聘个人求职信
2013/12/10 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
母亲去世追悼词
2015/06/23 职场文书
交通事故责任认定书
2015/08/06 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python
利用Python多线程实现图片下载器
2022/03/25 Python
Vue+Flask实现图片传输功能
2022/04/01 Vue.js