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

先贴官网 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),则需要减少中间行的xlh
                                    if (oldIndex > newIndex) {
                                        for (let i = newIndex + 1; i < oldIndex; i++) {
                                            cache[i].xlh--;
                                        }
                                    }
                                    // 如果是向后移动(oldIndex < newIndex),则需要增加中间行的xlh
                                    else if (oldIndex < newIndex) {
                                        for (let i = oldIndex; i < newIndex; i++) {
                                            cache[i].xlh++;
                                        }
                                    }
                                    // 直接根据新的索引位置更新修改行的xlh
                                    modifiedRow.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
                                });
相关推荐
祈澈菇凉2 小时前
Webpack的基本功能有哪些
前端·javascript·vue.js
小纯洁w2 小时前
Webpack 的 require.context 和 Vite 的 import.meta.glob 的详细介绍和使用
前端·webpack·node.js
想睡好3 小时前
css文本属性
前端·css
qianmoQ3 小时前
第三章:组件开发实战 - 第五节 - Tailwind CSS 响应式导航栏实现
前端·css
记得早睡~3 小时前
leetcode150-逆波兰表达式求值
javascript·算法·leetcode
zhoupenghui1683 小时前
golang时间相关函数总结
服务器·前端·golang·time
White graces3 小时前
正则表达式效验邮箱格式, 手机号格式, 密码长度
前端·spring boot·spring·正则表达式·java-ee·maven·intellij-idea
庸俗今天不摸鱼3 小时前
Canvas进阶-4、边界检测(流光,鼠标拖尾)
开发语言·前端·javascript·计算机外设
bubusa~>_<4 小时前
解决npm install 出现error,比如:ERR_SSL_CIPHER_OPERATION_FAILED
前端·npm·node.js
[廾匸]4 小时前
cesium视频投影
javascript·无人机·cesium·cesium.js·视频投影