layui 数据表格 拖动 列、行 位置 重新排序 等

server/2024/9/24 12:59:38/

先贴官网 layui官网 ;

再贴一个要使用的 插件官网 : layui-soul-table 示例文档 ;

这个插件功能很多 

看到那个下载 后悔没早点知道啊 还自己写了 一个下载 

可以到官网看看 很多实用的 

需要引入的 js  

layui.config({base: rootPath,version: true
}).extend({//  自定义扩展soulTable: 'three-modules/soul-Table/soulTable.slim',   // soulTable表格扩展( 要使用soulTable必须先引入当前文件)tableChild: 'three-modules/soul-Table/tableChild',     //  soulTable子表扩展tableMerge: 'three-modules/soul-Table/tableMerge',     // soulTable合并单元格扩展tableFilter: 'three-modules/soul-Table/tableFilter',   // soulTable筛选扩展excel: 'three-modules/soul-Table/excel',               // soulTable导出excel扩展});

官网上也是这样引入的 统一管理的 所以 很友好 能有 直接添加到自己的增加的后面  

遇到的问题 就是 排序 因为我的数据表格中 主要是要获取但当前的排序 

拖动后更改位置 当前的能够显示出来 

根据给的获取数据 

 let oldIndex = obj.oldIndex; // 原来的数据索引let newIndex = obj.newIndex;  // 改动后数据索引let modifiedRow = obj.row;   // 修改行数据let cache = obj.cache; // 改动后全表数据

然后判断移动了多少 进行重载渲染:  我的字段名称是 xlh 能使用的话 换成自己的就行了 

 // 首先,找到修改行在全表数据中的索引,以便后续直接操作let modifiedRowIndex = cache.findIndex(row => row.xlh === modifiedRow.xlh && row.fdname === modifiedRow.fdname);// 确保找到了对应的行if (modifiedRowIndex !== -1) {// 如果移动是向前(oldIndex > newIndex),则需要减少中间行的xlhif (oldIndex > newIndex) {for (let i = newIndex + 1; i < oldIndex; i++) {cache[i].xlh--;}}// 如果是向后移动(oldIndex < newIndex),则需要增加中间行的xlhelse if (oldIndex < newIndex) {for (let i = oldIndex; i < newIndex; i++) {cache[i].xlh++;}}// 直接根据新的索引位置更新修改行的xlhmodifiedRow.xlh = newIndex + 1;// 更新 cache 中对应行的数据(虽然实际上可能不需要,因为假设 cache 已经是最新的)// 但这里为了演示逻辑完整性,我们模拟更新操作cache[modifiedRowIndex] = modifiedRow;// 重新遍历并确保所有行的xlh正确无误(这一步在大多数情况下可能不需要,因为我们已经针对性调整了受影响的部分)// 但为了确保逻辑完整性,保留此步骤cache.forEach((row, index) => {row.xlh = index + 1; // 确保每个xlh与索引对应});// console.log("根据新顺序更新xlh后的全表数据:", cache);} else {console.error("在全表数据中未找到对应的修改行");}// console.log("根据最终顺序更新xlh后的数据:", cache);table.reloadData('表id', {data: cache});


http://www.ppmy.cn/server/39767.html

相关文章

python在Django中实现文件上传功能主要涉及几个步骤

在Django中实现文件上传功能主要涉及几个步骤。以下是一个基本的指南,用于在Django应用程序中设置文件上传: 设置模型 首先,你需要在模型中定义一个FileField或ImageField。对于图像,ImageField更为合适,因为它包含对图像大小调整和其他图像相关功能的验证。 python 复…

深入理解卷积函数torch.nn.Conv2d的各个参数以及计算公式(看完写模型就很简单了)

代码解释帮助理解&#xff1a; torch.randn(10, 3, 32, 32)&#xff0c;初始数据&#xff1a;(10, 3, 32, 32)代表有10张图片&#xff0c;每张图片的像素点用三个数表示&#xff0c;每张图片大小为32x32。&#xff08;重点理解这个下面就好理解了&#xff09; nn.Conv2d(3, 64…

面试前端随笔20240510

最近公司招聘前端开发人员有幸参与帮听&#xff0c;总结了三个有关vue的面试问题和答案&#xff0c;现在分享一下。 1.Vue2数据监听无法监听数组为啥&#xff1f;有啥解决方案&#xff1f;vue3中是如何处理这个问题&#xff1f; vue2的官方说明了defineProperty的一些限制&…

【Linux】环境变量、进程替换、wait/waitpid

文章目录 一、环境变量1. 查看环境变量的方法1.1 env1.2 echo $环境变量名 2. 在代码中使用环境变量的方法2.1 命令行参数传参2.2 environ变量2.3 getenv( )函数 3. export 二、进程替换1. execl2. execlp3. execle4. execv5. execvp6. execvpe7. 补充7.1 命名理解7.2 返回值 三…

图像下载的新趋势:Kotlin技术探索与实践

随着互联网的迅速发展和智能设备的普及&#xff0c;图像下载作为一项重要的技术应用&#xff0c;也在不断演进和创新。在这篇文章中&#xff0c;我们将探讨图像下载的新趋势&#xff0c;并使用Kotlin语言进行实践探索。 引言 图像下载是指从网络上获取图像并保存到本地设备的…

Thread类的属性及常见方法

Thread是JVM用于管理线程的类&#xff0c;换句话说&#xff0c;每个线程都有一个Thread对象与之关联&#xff0c;一个Thread对象有ID、名称、优先级、状态等属性&#xff0c;JVM会将这些Thread对象组织起来&#xff0c;用于线程调度&#xff0c;线程管理。 1. Thread的常见构造…

RK3588 usb adb调试

问题&#xff1a;2路usb3.0 otg&#xff0c;在使用其中一路typeC1作用adb功能使用后&#xff0c;将这路设置成host模式后&#xff0c;另外一路typeC0设置device&#xff0c;这路还是无法当做usb adb来使用。 查看usb typeC1当前模式 cat /sys/kernel/debug/usb/fc400000.usb/m…

防爆气象仪

TH-WFB5矿山作为一个特殊的工作环境&#xff0c;其安全生产一直是重中之重。而矿山环境中的气象变化&#xff0c;如温度、湿度、风速、风向等&#xff0c;不仅直接影响矿山的日常生产活动&#xff0c;还关系到矿工的生命安全。因此&#xff0c;防爆气象仪的应用显得尤为重要。 …