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
                                });
相关推荐
WeiXiao_Hyy几秒前
成为 Top 1% 的工程师
java·开发语言·javascript·经验分享·后端
吃杠碰小鸡17 分钟前
高中数学-数列-导数证明
前端·数学·算法
kingwebo'sZone23 分钟前
C#使用Aspose.Words把 word转成图片
前端·c#·word
xjt_090143 分钟前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js
我是伪码农1 小时前
Vue 2.3
前端·javascript·vue.js
夜郎king1 小时前
HTML5 SVG 实现日出日落动画与实时天气可视化
前端·html5·svg 日出日落
辰风沐阳1 小时前
JavaScript 的宏任务和微任务
javascript
夏幻灵2 小时前
HTML5里最常用的十大标签
前端·html·html5
冰暮流星2 小时前
javascript之二重循环练习
开发语言·javascript·数据库
Mr Xu_3 小时前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js