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中的array数组使用技巧
Jan 31 Javascript
Web 前端设计模式--Dom重构 提高显示性能
Oct 22 Javascript
Javascript数组的排序 sort()方法和reverse()方法
Jun 04 Javascript
js中的caller和callee属性介绍和例子
Jun 07 Javascript
JS验证逗号隔开可以是中文字母数字
Apr 22 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
Jun 13 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
Dec 07 Javascript
浅谈node模块与npm包管理工具
Jan 03 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
Feb 27 Javascript
微信小程序自定义支持图片的弹窗
Dec 21 Javascript
jQuery实现影院选座订座效果
Apr 13 jQuery
详解TypeScript中的类型保护
Apr 29 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递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
关于js类的定义
2011/06/28 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
JS实现计算小于非负数n的素数的数量算法示例
2019/02/26 Javascript
vue权限问题的完美解决方案
2019/05/08 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
vue.js this.$router.push获取不到params参数问题
2020/03/03 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
python 网络编程常用代码段
2016/08/28 Python
python+flask实现API的方法
2018/11/21 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
python实现五子棋人机对战游戏
2020/03/25 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
mysql函数全面总结
2021/11/11 MySQL