LayUI数据表格 通用工具栏 分页+搜索+排序

2023-10-27

完成效果

1、接收和展示后端接口传来的数据;
2、分页和跳页;设置每页的数量;
3、 工具栏:查看、修改、删除;
4、工具栏:筛选列、导出Excel、打印;
5、搜索功能;
6、后端排序功能;
在这里插入图片描述
本实例只展示了实现功能的必须代码,后端代码的非必须部分未贴出。
本实例默认读者是后端程序员,着重展示前端部分。




后端

前置技能

1、SSM
2、pageHelper插件
3、前端基础和ajax

如果后端实现很熟悉了,可以直接跳到前端部分。

本实例用到的实体类
public class Repair {
    private Integer rep_id;
	//售后维修点 公司名称
    private String rep_name;
	//售后维修点 公司地址
    private String address;
	//售后维修点 联系方式
    private String phonenum;
本实例用到的select方法

传参了用条件查询,未传参全表查询。

  <select id="select"  parameterType="entity.aftersales.Repair" resultType="group3.entity.aftersales.Repair">
  	select rep_id, rep_name, address, phonenum from aftersales_repair 
  	<where>
  		<if test="rep_name!=null">
  			and rep_name like concat('%',#{rep_name},'%')
  		</if>
  		 <if test="address!=null">
  			and address like concat('%',#{address},'%')
  		</if>
  		<if test="phonenum!=null">
  			and phonenum like concat('%',#{phonenum},'%')
  		</if>
  	</where>
</select>
本实例用到的handler方法
list方法的参数说明
repair		//条件查询的参数;

field 		//排序的字段;
order		//排序的正反序;

page 		//分页的页数;
limit 		//分页每页几条;

layui组件会自动传分页参数,排序参数需要我们手动添加。

回调数据说明
"code" 		//layui表格固定参数
"msg"		//layui表格固定参数
"count"		//layui表格固定参数  总数
"data"	  //layui表格固定参数  数据
@Controller
@RequestMapping("/repair")
public class RepairHandler {
	@Autowired
	private RepairService ser;		//自动注入service
	
	@RequestMapping("/list")
	@ResponseBody
		public Map<String,Object>  list(Repair repair,String field,String order,@RequestParam(defaultValue="1")int page,@RequestParam(defaultValue="10")int limit) {
		//开启分页
		PageHelper.startPage(page, limit);
		//如果传了排序的参数  添加排序sql
		if(field!=null&&order!=null) {
			PageHelper.orderBy(field+" "+order);
		}
		//查询
		List<Repair> list=ser.select(repair);
		PageInfo<Repair> pageInfo = new PageInfo<Repair>(list);
		PageHelper.clearPage();		//清除分页的参数
		//装填回调参数
		Map<String,Object> map=new HashMap<>();
		map.put("code", 0);		//layui表格固定参数
		map.put("msg", "随便写啥");		//layui表格固定参数
		map.put("count",pageInfo.getTotal());	//layui表格固定参数  总数
		map.put("data", pageInfo.getList());	//数据
		return map;
	}

这里你把pageinfo整个传到前端再拆解也可以,我这里就按最简单的方法来。




思路

前端传查询参数、分页参数、排序字段到后端,
查询实现写在mybatis的mapper.xml里;
分页和排序的添加靠pagehelper实现。




前端

界面部分

这种scrpt标签是layui的组件,后面可以通过代码嵌入到数据表格里。

就三部分:行工具栏、表工具栏、表格

 <!-- 行工具栏 -->
<script type="text/html" id="barDemo">
  <a class="layui-btn layui-btn-primary layui-btn-sm" lay-event="detail">查看</a>
  <a class="layui-btn layui-btn-sm" lay-event="edit">编辑</a>
  <a class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del">删除</a>
</script>
 <!-- 表工具栏 -->
<script type="text/html" id="Sech">
    <div class="demoTable">
        搜索标题:
        <div class="layui-inline">
            <input class="layui-input" name="id" id="demoReload" autocomplete="off">
        </div>
        <button id="search" class="layui-btn" data-type="reload" >搜索</button>
</div>
  <!-- 数据表格 -->   
<table id="demo"  class="layui-hide" lay-filter="test"></table>

lay-filter是layui的选择器

JS部分

核心部分
$(function(){
	layui.use(['table', 'layer'], function () {
		var table = layui.table;
		var layer = layui.layer;	
		//表格数据
		var $table=table.render({
			elem: '#demo' //指定原始表格元素选择器(推荐id选择器)
			,id:'#demo'		//指定容器唯一 id,可以和原生id不一样,id 是对表格的数据操作方法上是必要的传递条件
			,title:"售后维修点表格"
//			,height: 315 //容器高度
			,url: 接口rul
			,size:'lg'
			,autoSort: false 	//关闭前端排序 使用后端排序
			,toolbar: '#Sech'	 //添加 表工具栏 这里用的是scrpt标签的id
			,method: 'post'
			,page:{
				layout: [ 'prev', 'page', 'next', 'count','limit', 'refresh', 'skip']//自定义分页布局 
				,limit:10	//初始每页数量
				,limits:[5,10,15,20]	//可选的每页数量
				,groups:10	//最多几个跳页按钮  1 2 3 4 5 6 这种跳页按钮
				,first: false //不显示首页
				,last: false //不显示尾页
				}
			,cols: [[	//设置表头
				{type:'numbers', width:'5%', title: '序号', sort: true}	//字段是否支持排序
				,{field:'rep_id', width:'8%', title: 'ID', sort: true}
				,{field:'rep_name', width:'22%', title: '公司名'}
				,{field:'address', width:'25%', title: '地址', sort: true}
				,{field:'phonenum', width:'20%', title: '电话'}
				 //添加 行工具栏
				,{fixed: 'right', width:'20%', align:'center', title: '数据操作',toolbar: '#barDemo'} 
					]]
			,done: function(){	//回调成功后执行
				//搜索按钮  附加监听
				addSearchListener(table);
			}
		});	
		//行工具栏 附加监听
		addToolListenerr(table);
		//排序 附加监听
		addSortListener(table);
	}); 	//layui.use
})	//function

1、autoSort要设置为false,关闭前端的排序,使用后端排序;
2、行工具栏、排序这些的监听,是layui自带的方法,所以每次重载会自动添加;
3、搜索按钮的监听我是用jquery添加的,数据表格重载时就没了,所以需要在done里添加;
4、done:回调函数接收成功后执行的操作;
5、id:'#demo'这里是新设置一个layui容器id,可以不是原生html标签的id

添加搜索按钮的监听事件
function addSearchListener(table){
	$("#search").off();	//移出原本监听
	//添加监听
	$("#search").on('click', function () {
		table.reload('#demo', {		//这里的参数是layui容器唯一id !!不是原生id
			method: 'post'
			, where: {		//请求带的参数,json格式
					address:$("#demoReload").val().trim()
				}
			, page: {		//分页参数
				curr: 1		//搜素后从第一页开始展示
			}
		});
	});
}	 

使用table组件的reload方法重载数据表格。
reload的参数为 table.reload( layui容器唯一id,重载方法() )

添加排序的监听事件
function addSortListener(table){
	table.on('sort(test)', function(obj){ //注:sort是工具条事件,test是layui容器lay-filter="对应的值"
		  //尽管我们的 table 自带排序功能,但并没有请求服务端。
		  //有些时候,你可能需要根据当前排序的字段,重新向服务端发送请求,从而实现服务端排序:
		  table.reload('#demo', {	//这里的参数是layui容器唯一id !!不是原生id
			    initSort: obj //记录初始图标的状态
			    ,method: 'post'
			    ,where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
			      field: obj.field //排序字段
			      ,order: obj.type //排序方式
			    }
		  });
	});
}

1、obj是触发监听事件的 那一个排序图标(小三角图标);
2、这个监听事件,当点击排序的 小三角 图标是,会触发;
3、方法会向接口发起一次请求,请求附带了 field (排序字段),order (正反序) 两个参数;
4、layui会自动把回调数据填入表格,我们无需关心实现。

添加行工具栏的监听事件

这三个按钮的监听事件
在这里插入图片描述

function addToolListenerr(table){
	  table.on('tool(test)', function(obj){		//tool是layui工具条事件  test是lay-filter="test"的值 
			//获取当前行数据
			  var data = obj.data;
			//获取event对应的值  是按钮标签的lay-event="detail"这个属性的值
			var event =obj.event;
			//获取当前行的dom对象
			var tr=obj.tr;  
			//判断event是什么命令,这里用case分支也可以
		    if(event === 'detail'){
				//具体操作
	
		    } else if(event === 'del'){
		     	//具体操作
		     	
		    } else if(event === 'edit'){
				//具体操作

		    }
	  }); 
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LayUI数据表格 通用工具栏 分页+搜索+排序 的相关文章

  • Spring详解(0 控制反转和依赖注入 AOP简介 )

    目录 依赖注入 控制反转和依赖注入的关系 Spring中的依赖注入 AOP 面向切面编程 Spring 框架本身的四大原则 1 使用pojo进行轻量级和最小侵入式开发 2 通过依赖注入和基于接口编程实现松耦合 3 通过AOP和默认习惯进行声
  • Linux命令常见命令用例

    文章目录 常见命令 awk find Tcp抓包 常见命令 awk 筛选nginx日志时间大于5s cat access log sed s g awk 11 NF gt 5 gt out5s log 筛选nginx状态码等于200 cat

随机推荐

  • ETL工具模块的创建

    01 logging工具模块开发 掌握 日志记录的工具模块 作用 方便后续在 ETL 程序中记录日志 目标 当我们在项目的其他位置使用logging模块进行日志记录时 不需要进行配置或者只需要进行简单的配置即可使用 为了更方便的使用logg
  • 微信小程序本地存储(wx.setStorage)和(wx.setStorageSync)

    在微信小程序中 可以使用本地存储来保存一些数据比如用户状态 姓名 性别等 本地存储主要包括两种方式 缓存和本地数据存储 缓存 缓存是一种快速访问内存的临时存储机制 可以有效地提高应用程序的响应速度 在微信小程序中 可以使用wx setSto
  • 虚拟机与主机串口通信(主机与主机)

    简介 由于某些主机无串口接口 或者需要两台主机交互通信来实现串口收发端的调试 modubus通讯的调试 为方便起见 查阅资料后 特有此文 一 环境 硬件 x86 系统 本机 win7 64 Vmware ubuntu16 04 软件 Vir
  • 微信小程序学习笔记--商城案例(黑马教程)

    目录 起步 运行于小程序 Git 托管到码云 tabbar 创建tabBar 配置tabbar 导航条颜色 首页 网络配置 请求轮播图数据 渲染轮播图 配置小程序分包 点击轮播图 跳转详情页 全局添加弹窗方法 获取分类导航数据 渲染分类导航
  • numpy的文件存储 .npy .npz 文件

    将数组以二进制格式保存到磁盘 转自 https blog csdn net m0 37041325 article details 78006203 np load和np save是读写磁盘数组数据的两个主要函数 默认情况下 数组是以未压缩
  • 最近写了10篇Java技术博客【SQL和画图组件】

    1 Java获取SQL语句中的表名 2 Java SQL 解析器实践 3 Java SQL 格式化实践 4 Java 画图 画图组件jgraphx项目整体介绍 一 画图组件jgraphx项目导出实践 二 画图组件jgraphx项目连接线实践
  • 小程序开发:在登录时弹窗用户使用协议

    本次讲的是如何在用户打开小程序时候弹窗该小程序的使用协议 阅读确认后方可继续使用小程序 这一点的意义在于 目前小程序对于各个开放接口的使用限制更严格 使用开放接口获取用户信息需要添加使用的用途说明 那我们正好可以使用这一个使用协议弹窗来说明
  • K8s:二进制部署高可用K8s集群

    K8s二进制高可用部署 说在前面 本章相关代码及笔记地址 飞机票 Github Java超神之路 Java全生态技术学习笔记 一起超神吧 CSDN Java超神之路 Java全生态技术学习笔记 一起超神吧 前言 本文所有涉及软件包等文件均在
  • 禅道——安装教程

    禅道安装指南 前言 一 禅道的安装和配置 1 1 其他修改 前言 禅道 项目管理工具 管理软件开发的整个流程 一 禅道的安装和配置 安装 点这里 进入官网 点击下载 点进去之后选择自己相要的版本 这里只要不是最新版本都会稳定
  • Multisim实现555计时器模拟简易电子琴

    555计时器模拟简易电子琴 一 元器件介绍 二 原理分析 三 仿真实验 四 仿真错误 一 元器件介绍 这里用到的元器件有 DIgital power VCC 数字电源 频率计数器 XFC 示波器 XSC ground 数字地 Capacit
  • cmake建立自己的package

    通过cmake建立自己的package cmake提供了CMakePackageConfigHelpers来方便实现我们的需求 详细文章参考如下 1 https blog csdn net xiaoxiaozengz article det
  • go协程、管道

    请感受一下协程的强大 使用了管道序列 package main import fmt time 创建一个管道 用于写入数据 func writeChantest writeChan chan int for i 0 i lt 20 i wr
  • ISO 26262:保障驾驶安全的汽车功能安全标准

    来源 中豪认证 随着汽车科技的迅猛发展 越来越多的电子系统和功能被引入汽车中 为驾驶体验和安全性带来了巨大的改进 然而 这些复杂的电子系统也带来了潜在的风险和安全挑战 为了确保现代汽车在各种情况下的安全性 国际标准化组织于2011年发布了I
  • 实现浏览页面时校验用户是否已经完成登录的功能

    一 实现原理 实现步骤 1 创建自定义过滤器LoginWebFilter java 2 在启动类上加入注解 ServletComponentScan 用来扫描web相关的注解 3 完善过滤器的处理逻辑 二 代码实现 首先在main java
  • 关于Xilinx下载器驱动安装及常见问题解决方法

    PC操作系统平台 Win7x64 ISE14 4 ISE14 7 下载器工作状态指示灯说明 如果Xilinx的下载器与电脑连接之后 下载器上面的指示灯不亮 说明PC上安装的下载器驱动有问题或者是下载器坏掉了 如果下载器与电脑连接之后 并与开
  • CTFshow 每日一练

    一 web签到题 打开链接 查看源码 利用base64解码得到flag 二 web2 看到有提示 SQL注入 先试着使用万能密码登陆 发现有回显 直接sql注入 or 1 1 order by 3 发现到4时不回显 开始爆库名 看看哪个位置
  • 2、ubuntu18.04安装cmake

    本文以安装cmake3 18 0为例 1 获取安装包 wget https cmake org files v3 18 cmake 3 18 0 Linux x86 64 tar gz 2 解压压缩包 tar zxvf cmake 3 18
  • GD32F3x0 USB CDC应用案例

    GD32F3x0 USB CDC应用 本文有点长 描述了从0开始移植驱动到应用的过程和思路 准备工作 因项目需求这两天需要做个USB的虚拟COM口发卡器 实现双向通讯 由于功能较为简单我们选择GD32F350来开发 先跑跑官方例程 GD32
  • 分享程序员在囧途网站

    不知不觉的在博客园看到了失业的程序员系列文章 我就带着好奇的看了几章 然后发现类似创业的文章的经历的文章 都是程序员爱看到的文章 同时把这样的经历加上一点修饰 是很多程序员喜欢的话题 也是程序员想看到的文章 不知道不觉到了第六章的时候 文章
  • LayUI数据表格 通用工具栏 分页+搜索+排序

    完成效果 1 接收和展示后端接口传来的数据 2 分页和跳页 设置每页的数量 3 工具栏 查看 修改 删除 4 工具栏 筛选列 导出Excel 打印 5 搜索功能 6 后端排序功能 本实例只展示了实现功能的必须代码 后端代码的非必须部分未贴出