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 相关文章推荐
Jquery中LigerUi的弹出编辑框(实现方法)
Jul 09 Javascript
jquery获取css的color值返回RGB的方法
Dec 18 Javascript
jQuery mobile 移动web(6)
Dec 20 Javascript
jquery实现简单的banner轮播效果【实例】
Mar 30 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
Dec 12 Javascript
vue生成文件本地打开查看效果的实例
Sep 06 Javascript
小程序scroll-view组件实现滚动的示例代码
Sep 20 Javascript
vue组件中的样式属性scoped实例详解
Oct 30 Javascript
基于vue实现web端超大数据量表格的卡顿解决
Apr 02 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
Apr 18 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
Oct 14 Javascript
Javascript原型链及instanceof原理详解
May 25 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
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
zend api扩展的php对象的autoload工具
2011/04/18 PHP
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
分享常见的几种页面静态化的方法
2015/01/08 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
使用puppeteer破解极验的滑动验证码
2018/02/24 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
python executemany的使用及注意事项
2017/03/13 Python
查看django版本的方法分享
2018/05/14 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
python异步实现定时任务和周期任务的方法
2019/06/29 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
python对Excel的读取的示例代码
2020/02/14 Python
Python中私有属性的定义方式
2020/03/05 Python
Python实现上下文管理器的方法
2020/08/07 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
聚美优品恶搞广告词
2014/03/14 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
小学优秀教师材料
2014/12/15 职场文书
MySQL解决Navicat设置默认字符串时的报错问题
2022/06/16 MySQL