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 相关文章推荐
Javascript下的keyCode键码值表
Apr 10 Javascript
javascript jQuery $.post $.ajax用法
Jul 09 Javascript
javascript基础知识大集锦(二) 推荐收藏
Jan 13 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
May 27 Javascript
JavaScript修改css样式style动态改变元素样式
Dec 16 Javascript
使用javascript实现Iframe自适应高度
Dec 24 Javascript
jQuery选择器源码解读(二):select方法
Mar 31 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
Aug 13 Javascript
jQuery删除当前节点元素
Dec 07 Javascript
es6学习笔记之Async函数基本教程
May 11 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
Sep 30 Javascript
详解小程序开发经验:多页面数据同步
May 18 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性能优化工具篇Benchmark类调试执行时间
2011/12/06 PHP
php用户密码加密算法分析【Discuz加密算法】
2016/10/12 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
php的对象传值与引用传值代码实例讲解
2021/02/26 PHP
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
Vue方法与事件处理器详解
2016/12/01 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
利用node.js实现反向代理的方法详解
2017/07/24 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
Linux下将Python的Django项目部署到Apache服务器
2015/12/24 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
pandas中的series数据类型详解
2019/07/06 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
python nmap实现端口扫描器教程
2020/05/28 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
预备党员党校学习自我评价分享
2013/11/12 职场文书
化验室技术员岗位职责
2013/12/24 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
作文批改评语
2014/12/25 职场文书
统计员岗位职责范本
2015/04/14 职场文书
赢在执行观后感
2015/06/16 职场文书
保护环境的宣传语
2015/07/13 职场文书
学校运动会开幕词
2016/03/03 职场文书
python使用pymysql模块操作MySQL
2021/06/16 Python