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 相关文章推荐
通过JS 获取Mouse Position(鼠标坐标)的代码
Sep 21 Javascript
js变换显示图片的实例
Apr 16 Javascript
自定义刻度jQuery进度条及插件
Sep 02 Javascript
JavaScript获取当前cpu使用率的方法
Dec 15 Javascript
AngularJS API之copy深拷贝详解及实例
Sep 14 Javascript
JS请求servlet功能示例
Jun 01 Javascript
简单实现js进度条加载效果
Mar 25 Javascript
JS获取字符对应的ASCII码实例
Sep 10 Javascript
纯js代码生成可搜索选择下拉列表的实例
Jan 11 Javascript
Vue.js更改调试地址端口号的实例
Sep 19 Javascript
JointJS流程图的绘制方法
Dec 03 Javascript
vue项目实现减少app.js和vender.js的体积操作
Nov 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代码 用PHP写出自己的BLOG系统
2010/04/12 PHP
php的urlencode()URL编码函数浅析
2011/08/09 PHP
使用php实现截取指定长度
2013/08/06 PHP
PHP中的流(streams)浅析
2015/07/02 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
php给图片加文字水印
2015/07/31 PHP
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
详解JS模块导入导出
2017/12/20 Javascript
WebSocket的通信过程与实现方法详解
2018/04/29 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
js实现按钮开关单机下拉菜单效果
2018/11/22 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
2019/07/16 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
python检测远程udp端口是否打开的方法
2015/03/14 Python
python中尾递归用法实例详解
2015/04/28 Python
python之文件的读写和文件目录以及文件夹的操作实现代码
2016/08/28 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
Python笔试面试题小结
2019/09/07 Python
详解使用django-mama-cas快速搭建CAS服务的实现
2019/10/30 Python
CSS3实现文本垂直排列的方法
2018/07/10 HTML / CSS
高一学生期末评语
2014/04/25 职场文书
服务标兵事迹材料
2014/05/04 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
2021/04/24 Python