【前端】Layui动态数据表格拖动排序

目录

一、下载layui-soul-table

二、使用

三、Layui实际使用

1、html代码

2、JS代码

3、PHP后台代码


目的:使用Layui的数据表格,拖动行进行排序。

使用插件:layui-soul-table 和 Layui  

1.layui-soul-table文档:https://soultable.yelog.org/#/zh-CN/component/start/install

2.layui文档:Layui table模块 | 数据表格 | datatable - 在线演示

结合Layui并参看layui-soul-table官方教程,写的比较详细页比较简单。

实现效果:可以拖动行进行排序,可以搜索

一、下载layui-soul-table

把下载好的文件放到项目中,比如说放到public文件夹下的/ext/soulTable/下,下载的内容很多,不需要全部都放到目录下,只需要把用到拷贝进来就行,如下图

二、使用

因为需求是实现拖动排序,所以只用到了soulTable.slim.js

layui.config({base: '/ext/',   // 第三方模块所在目录version: 'v1.6.4' // 插件版本号
}).extend({                         soulTable: 'soulTable/soulTable.slim'	// 模块
});
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

三、Layui实际使用

1、html代码

有几个需要注意的地方:

1、搜索按钮的lay-filter要一致

2、lay-event对应下面的toolbar

<div class="layui-form layui-card-header layuiadmin-card-header-auto"><!-- 搜索 start --><form  class="layui-form layui-form-pane"  style="float:left"><div class="layui-form-item"><label class="layui-form-label">视频名称</label><div class="layui-input-inline"><input type="text" name="filename" placeholder="视频名称" autocomplete="off" class="layui-input" value=""></div><button class="layui-btn layui-btn-normal" lay-submit lay-filter="demo-table-search"><i class="fa fa-search" aria-hidden="true"></i> 搜 索</button></div></form><!-- 搜索 end --></div><div class="layui-card-body" style="width: 96%; margin: 0 auto; overflow-x: auto;"><table id="myTable" lay-filter="test" id="test"></table><!-- <script type="text/html" id="myBar"> </script> --><script type="text/html" id="preview"><button type="button" class="layui-btn layui-btn-sm" lay-event="preview"> <i class="fa fa-eye" aria-hidden="true"></i> 预览</button></script><script type="text/html" id="barDemo"><a class="layui-btn layui-btn-sm layui-btn-normal" lay-event="edit"><i class="fa fa-edit" aria-hidden="true"></i> 修改 </a><a class="layui-btn layui-btn-sm layui-btn-primary" lay-event="del"> <i class="fa fa-trash" aria-hidden="true"></i> 删除</a></script>
</div>

2、JS代码

1、引入soulTable,注意路径,我存放的路径是在/public/ext/soulTable/下

2、extend引入的模块可以根据自己需求添加

3、table.render()下的id和elem要和上面HTML中的table的id一致

4、rowDrag下的done里面的是拖动时触发的事件,可以从这里获取拖动行的数据信息,并在这里更新数据库

5、cols里的就是列名,列名对应上就行

6、done下的代码是刷新拖动之后的表格的,勿删

7、搜索提交:其实就是数据表格的重载,可以参考Layui官网,我这里为了后端接收方便,所有和Layui官网的示例有些出入。注意lay-filter监听要一致,其中table.reload下的myTable也要和上面HTML的一致,用于标识重载的表格

8、监听行工具事件:根据event的不同,处理不同的业务

layui.config({base: '/ext/',   // 第三方模块所在目录version: 'v1.6.4' // 插件版本号
}).extend({                         soulTable: 'soulTable/soulTable.slim'	// 模块
});layui.use(['element', 'layer','form','table','soulTable'], function(){var $ = layui.jquery,layer = layui.layer,element = layui.element,form = layui.form,table = layui.table,soulTable = layui.soulTable;var myTable = table.render({id: 'myTable',elem: '#myTable',url: 'videoquery'// ,toolbar: '#myBar',height: 500,rowDrag: {done: function(obj) {// 完成时(松开时)触发// 如果拖动前和拖动后无变化,则不会触发此方法// console.log(obj.row) // 当前行数据// console.log(obj.cache) // 改动后全表数据// console.log(obj.oldIndex) // 原来的数据索引// console.log(obj.newIndex) // 改动后数据索引var row_id = obj.row.id  	// 当前idvar row_sort = obj.newIndex+1 		// 拖动后的排序// console.log(row_id)// console.log(row_sort)$.ajax({url:'/teacher/video/upsort',type:'POST',dataType:'JSON',data:{id:row_id,sort:row_sort},success:function (res) {console.log(res)}})}},totalRow: true,cols: [[{field: 'filename', title: '视频名称', width: '20%', fixed: 'left'},{field: 'kejian', title: '关联课件', width: '30%', height:'auto', fixed: 'left'},{fixed: 'right', title:'预览', toolbar: '#preview', width:'20%'},{fixed: 'right', title:'操作', toolbar: '#barDemo', width:'30%'}]],page: true,done: function () {soulTable.render(this)}});// 搜索提交form.on('submit(demo-table-search)', function(data){var field = data.field; // 获得表单字段// console.log(field)// 执行搜索重载table.reload('myTable', {	page: {curr: 1 // 重新从第 1 页开始},where: field // 搜索的字段});return false; // 阻止默认 form 跳转});//监听行工具事件table.on('tool(test)', function(obj){var data = obj.data;//console.log(obj)if(obj.event === 'preview'){// console.log(data)// 预览window.open(data.path);}else if(obj.event === 'del'){// console.log(data.id)layer.confirm('确定删除吗?', {icon: 3, title:'提示'}, function(index){$.ajax({	url:"del",type:"POST",dataType:"JSON",data:{id:data.id},success:function (res) {if (res.code == 200) {layer.msg(res.message);obj.del();}else{layer.msg(res.message);return false;}}})});} else if(obj.event === 'edit'){// console.log(data.id)window.location.href='edit.html?id='+data.id;}});});  

3、PHP后台代码

主要是添加了搜索,返回的是JSON数据

public function videoquery(){$map = array();$filename = trim(input('param.filename'));if (!empty($filename)) {$map['video.filename'] = array('like',"%$filename%");}$list = model('Video')->getList($this->tid,$map);// p($list);apiResponse('0','success',$list);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/63670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

code 架构

目录 1. code 架构1.1. 代码质量的评判的维度1.2. 架构师1.3. 基础平台篇1. code 架构 1.1. 代码质量的评判的维度 可阅读性 (方便代码流转)可扩展性 / 可维护性(方便修改功能, 添加新功能)可测试性 (质量管理)可复用性 (简化后续功能开发的难度)1.2. 架构师 软件工程是一项非…

重新开始 杂类:C++基础

目录 1.输入输出 2 . i 与 i 3.结构体 4.二进制 1.输入输出 #include<cstdio>//cin>>,cout #include<iostream>//printf,scanf &#xff08;1&#xff09; cin , cout输入输出流可直接用于数字&#xff0c;字符 &#xff08;2&#xff09;scanf(&quo…

Promise和Observable的区别(含示例)

Promise和Observable是JavaScript中处理异步操作的两种不同方式&#xff0c;它们在用法和特性上有一些重要区别。 1、返回值类型: Promise: Promise是一个表示异步操作结果的对象&#xff0c;它只能返回单个值&#xff08;成功或失败&#xff09;。 Observable: Observable是…

python爬虫-Selenium

一、Selenium简介 Selenium是一个用于Web应用程序测试的工具&#xff0c;Selenium 测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。模拟浏览器功能&#xff0c;自动执行网页中的js代码&#xff0c;实现动态加载。 二、环境配置 1、查看本机电脑谷歌浏览器的版…

自动化信息收集工具 水泽 使用教程

自动化信息收集工具 水泽 使用教程 1.水泽简介&安装2.使用教程3.测试使用1.水泽简介&安装 一条龙服务,只需要输入根域名即可全方位收集相关资产,并检测漏洞。也可以输入多个域名、C段IP等 开发语言:Python3 水泽下载地址 安装前置准备: 当前用户对该目录有写权…

缺陷或负样本难以收集怎么办?使用生成式模型自动生成训练样本,image-to-image Stable diffusion

文章大纲 样本稀疏与对应的解决方案如何解决工业缺陷检测小样本问题参考1:AIDG(Artificial Intelligent Defect Generator)参考2:灵感来源 : Image-to-Image Diffusion Models参考文献与学习路径参考博文数据集算法缺陷检测库hugging face样本稀疏与对应的解决方案 1.数据层面…

QT创建可移动点类

效果如图所示&#xff1a; 创建新类MovablePoint&#xff0c;继承自QWidget. MovablePoint头文件: #ifndef MOVABLEPOINT_H #define MOVABLEPOINT_H#include <QWidget> #include <QPainter> #include <QPaintEvent> #include <QStyleOption> #includ…

【1day】H5S视频平台未授权漏洞学习

目录 一、漏洞描述 二、资产测绘 三、漏洞复现 四、漏洞修复 一、漏洞描述 H5S视频平台是一个基于Web技术的视频播放和流媒体管理平台。它提供了一套完整的解决方案,用于在网页上播放和管理视频内容。H5S视频平台存在未授权漏洞,泄露内网rtsp服务集群的服务集群的和H5_…

Windows修改电脑DNS

访问浏览器出现无法访问此页面&#xff0c;找不到DNS地址&#xff0c;则可以通过如下方式修改DNS 按下windows键R键(两个键一起按) 出现下面窗口 输入control按回车键(Enter键)就会出现下面的窗口 DNS可以填下面这些&#xff1a; 114.114.114.114 和 114.114.115.115 阿里DNS&a…

Linux运维面试题整理-----(持续更新中)

1、mysql和Oracle的区别是什么&#xff1f; 一、本质的区别 MySQL是一个开源的关系数据库管理系统&#xff08;RDBMS&#xff09;。它是世界上使用最多的RDBMS&#xff0c;作为服务器运行&#xff0c;提供对多个数据库的多用户访问。它是一个开源、免费的数据库 Oracle数据库是…

c语言之指针的学习

1.指针是什么 &#xff08;指针是内存中一个最小单元的编号,也就是地址&#xff09; int main() {int a10;//当我们取出地址a的时候,取出的其实是a占4个字节中的第一个字节的地址int *pa&a;//pa是一个指针变量,用于存放地址//pa在口头语上常说为指针//指针本质上就是地址,…

sqlserver 自定义函数汉字转拼音或首字母

作用&#xff1a; 将汉字生成为全拼音或者首字母&#xff0c;示例 执行自定义函数&#xff0c;将汉字转成对应的首字母 执行自定义函数&#xff0c;将汉字转成全拼音 自定义教程&#xff1a; 一&#xff0c;只取汉字的首字母 代码如下&#xff1a; 执行下面sql 就自定义函数了…

Java+Github+Jenkins部署

Java项目—Jenkins部署笔记 一&#xff0c;准备 一台服务器操作系统&#xff0c;示例为ubuntu 22.0.4 可运行lsb_release -a查看 二&#xff0c;安装 docker 更新软件包列表&#xff1a; sudo apt update安装必要的软件包&#xff0c;以便使用HTTPS通过APT下载软件包&#x…

leetcode 1326. Minimum Number of Taps to Open to Water a Garden

x轴上的花园范围为[0,n], 0~n这个n1个离散点上有水龙头&#xff0c;第 i 个水龙头能浇水的范围为[i-ranges[i], iranges[i]]. 求能浇整个花园的最小水龙头个数。 思路&#xff1a; 方法一&#xff1a; greedy 先把每个水龙头能浇的区间准备好&#xff0c; 用一个数组保存所有…

Glide分析和总结

1. Glide概述 Glide是一款图片处理的框架&#xff0c;从框架设计的角度出发&#xff0c;最基本要实现的就是 加载图片 和 展示。 它把一个图片请求封装成一个Request对象&#xff0c;里面有开启、暂停、关闭、清除网络请求、以及载体生命周期的监听等操作。然后通过RequestBu…

语言模型(language model)

文章目录 引言1. 什么是语言模型2. 语言模型的主要用途2.1 言模型-语音识别2.2 语言模型-手写识别2.3 语言模型-输入法 3. 语言模型的分类4. N-gram语言模型4.1 N-gram语言模型-平滑方法4.2 ngram代码4.3 语言模型的评价指标4.4 两类语言模型的对比 5. 神经网络语言模型6. 语言…

云计算环境中高性能计算的挑战与对策

文章目录 云计算中的高性能计算挑战1. 资源竞争&#xff1a;2. 网络延迟&#xff1a;3. 数据传输效率&#xff1a;4. 虚拟化开销&#xff1a;5. 节点异构性&#xff1a; 高性能计算在云计算环境中的对策1. 定制化虚拟机镜像&#xff1a;2. 弹性资源调整&#xff1a;3. 高效数据…

Java 包装类和Arrays类(详细解释)

目录 包装类 作用介绍 包装类的特有功能 Arrays类 Arrays.fill() Arrays.toString() Arrays.sort() 升序排序 降序排序 Arrays.equals() Arrays.copyOf() Arrays.binarySearch() 包装类 作用介绍 包装类其实就是8种基本数据类型对应的引用类型。 基本数据类型引用…

C盘扩容遇到的问题(BitLocker解密、)

120G的C盘不知不觉的就满了&#xff0c;忍了好久终于要动手了。 尽管电脑-管理--磁盘管理里可以进行磁盘大小调整&#xff0c;但由于各盘都在用&#xff0c;不能够连续调整&#xff0c;所以选用DiskGenius。 # DiskGenius调整分区大小遇到“您选择的分区不支持无损调整容量” …

tcpdump

TCPDump是一个用于抓取网络数据包的命令行工具。它可以帮助网络管理员和开发人员分析网络流量、故障排除以及安全问题。下面是一些TCPDump的详细用法&#xff1a; 基本用法&#xff1a; 监听指定网络接口&#xff1a;tcpdump -i eth0通过IP地址过滤&#xff1a;tcpdump host 19…