layui表格分页以及菜单使用

layui表格分页以及菜单使用

本人是第一次写博客,写的不好不要喷我

1.首先引入layui对应的css和js文件

<link rel="stylesheet" th:href="@{/webjars/layui/2.4.5/css/layui.css}"  media="all">
<script type="text/javascript" th:src="@{/webjars/layui/2.4.5/layui.js}"></script>

2.第二部就把表格简历出来和响应的菜单建立出来

<table class="layui-table" id="filetab"  lay-filter="filetab">   </table>
<!--这里的菜单使用layui的模版简历的-->
<script type="text/html" id="toolbarDemo">
	<div class="layui-btn-container">
	<!--这里绑定的事件对应js中的switch case 中的选项-->
		<button class="layui-btn layui-btn-sm" lay-event="copyFile">复制</button>
		<button class="layui-btn layui-btn-sm" lay-event="cutFile">剪切</button>
		<button class="layui-btn layui-btn-sm" lay-event="delFile">删除</button>
	</div>		
</script>

3.开始写我们的js,我下面的代码大部分都有注释,大家应该可以看懂吧

// 文件表格
layui.use('table', function() {

	var table = layui.table;

	table.render({
		//表格的id
		elem : '#filetab',
		url : 'queryFile',
		//开启工具栏
		toolbar : '#toolbarDemo',
		response : {
			//后台返回的数据名字
			dataName : 'data',
			//返回的总数
			countName : 'total'
		},
		//下面就是查询出来的数据的列名相对应
		cols : [ [ {
			type : 'checkbox',
			fixed : 'left'
		}, {
			field : 'fileName',
			width : 300,
			title : '文件名',
			sort : true
		}, {
			field : 'fileTime',
			width : 275,
			title : '测试时间'
		} ] ],
		page : true,//开启分页
		limit : '10',//默认页码
		limits : [ 10, 20, 30 ]//选择页码列表
	});
	// 头工具栏事件
	table.on('toolbar(filetab)', function(obj) {
		var checkStatus = table.checkStatus(obj.config.id); // 获取选中行状态
		switch (obj.event) {
		// 复制
		case 'copyFile':
			var trObjs = checkStatus.data; // 获取选中行数据
				//对选择数据进行校验
			if (trObjs.length != 0) {
				$.each(trObjs, function(index, obj) {
					$.get("copyFile", {
						filePath : $('#path').text(),
						fileName : JSON.stringify(obj.fileName)
								.replace(/\"/g, "")
					}, function(data) {
						if (data.flag == true) {
							layer.msg('复制成功!文件已经为您复制到桌面');
						}
					}, 'json');
				});
			} else {
				layer.msg('请至少选择一行数据');
			}
			break;
		// 剪切
		case 'cutFile':
			var trObjs = checkStatus.data; // 获取选中行数据
			console.log(trObjs);
				//对选择数据进行校验
			if (trObjs.length != 0) {
				layui.each(trObjs, function(index, obj) {

					$.get("cutFile", {
						filePath : $('#path').text(),
						fileName : JSON.stringify(obj.fileName).replace(/\"/g,
								"")
					}, function(data) {
						if (data.flag == true) {
							layer.msg('剪切成功!文件已经为您剪切到桌面');
							parent.layui.table.reload('filetab');
						}
					}, 'json');
				});
			} else {
				layer.msg('请至少选择一行数据');
			}
			break;
		case 'delFile':
			var trObjs = checkStatus.data; // 获取选中行数据
			console.log(trObjs);
			//对选择数据进行校验
			if (trObjs.length != 0) {
				layer.confirm('确定要删除数据吗', {
					btn : [ '确定', '取消' ]
				// 按钮
				}, function() {
					layui.each(trObjs, function(index, obj) {
						$.get("delFile", {
							filePath : $('#path').text(),
							fileName : JSON.stringify(obj.fileName).replace(/\"/g, "")
						}, function(data) {
							if (data.flag == true) {
								layer.msg('删除成功!!!');
								parent.layui.table.reload('filetab');
							}
						}, 'json');
					});
				}, function() {

				});
			} else {
				layer.msg('请至少选择一行数据');
			}
			break;
		}
		;
	});
});

有一个重点就是layui表格开启分页的两个默认参数page(页码数),limit(一页的容量)

4.后台数据的处理
这里我是查的D:\test文件夹下的文件
下面我主要从查找文件说
1).Controller层

@GetMapping("/queryFile")
	public Map<String, Object> queryFile(Integer page,Integer limit) {
		List<Map<String,Object>> files = dataUploadService.getFiles("D:\\test",page,limit);
		int fileCount = dataUploadService.findFileCount("D:\\test");
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("code", 0); //默认返回的code是0,所以必须要写
		map.put("msg", "");
		map.put("data", files);
		map.put("total", fileCount);
		return map;
	}

2).Service层

/**
	 * 查找文件夹下的文件
	 */
	public List<Map<String, Object>> getFiles(String path,Integer page,Integer limit) {
		List<Map<String, Object>> files = new ArrayList<Map<String, Object>>();
		File file = new File(path);
		if(file.exists()) {
			try {
				file.createNewFile();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		File[] tempList = file.listFiles();
		Map<String, Object> fileMap = null;
		for (int i = 0; i < tempList.length; i++) {
			if (tempList[i].isFile()) {
				fileMap = new HashMap<String, Object>();
				//tempList[i].toString()----全路径      (tempList[i].toString()).substring(8)----获得文件名称
				fileMap.put("fileName", (tempList[i].toString()).substring(8));
				// 操作文件的时间根据文件的名截取
				fileMap.put("fileTime", tempList[i].toString().substring(14, 24));
			}
			files.add(fileMap);
		}
		int pageNo=(page-1)*limit;   //每页的起始索引

		Integer sum = files.size(); //记录总数

		if (pageNo+limit > sum) {
			files = files.subList(pageNo,sum );
		 }else {
			 files = files.subList(pageNo,pageNo+limit);
		}
		return files;
	}
/**
	 * 查找list总长度
	 * @param path
	 * @return
	 */
	public int findFileCount(String path) {
		List<Map<String, Object>> files = new ArrayList<Map<String, Object>>();
		File file = new File(path);
		
		File[] tempList = file.listFiles();
		Map<String, Object> fileMap = null;
		for (int i = 0; i < tempList.length; i++) {
			if (tempList[i].isFile()) {
				fileMap = new HashMap<String, Object>();
				fileMap.put("fileName", tempList[i].toString());
				// 操作文件的时间根据文件的名截取
				fileMap.put("fileTime", tempList[i].toString().substring(14, 24));
			}
			files.add(fileMap);
		}
		return files.size();
	}


通过service层将查询出来的数据进行分页,之后在查询出来的总数返回给controller层,在controller层简历一个map返回给前端页面,map的键主要是和layui表格接收的相同,必填的为 状态码,数据的总数.
最后效果图:
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
layui表格layui分页组件可以很好地搭配使用,可以实现数据的分页展示,具体使用方法如下: 1. 引入layui框架和相关样式文件: ```html <link rel="stylesheet" href="layui/css/layui.css"> <script src="layui/layui.js"></script> ``` 2. 创建一个容器用于展示表格分页组件: ```html <div id="demo"></div> ``` 3. 编写JavaScript代码,渲染表格分页组件: ```javascript layui.use(['table', 'laypage'], function(){ var table = layui.table; var laypage = layui.laypage; // 表格渲染 table.render({ elem: '#demo', url: '/data.json', // 数据接口 cols: [[ // 表头 {field: 'id', title: 'ID', width: 80}, {field: 'username', title: '用户名', width: 120}, {field: 'sex', title: '性别', width: 80}, {field: 'city', title: '城市', width: 100}, {field: 'sign', title: '签名', width: 200}, {field: 'experience', title: '积分', width: 80}, {field: 'score', title: '评分', width: 80}, {field: 'classify', title: '职业', width: 100}, {field: 'wealth', title: '财富', width: 120} ]] }); // 分页组件渲染 laypage.render({ elem: 'demo', // 分页容器的id count: 50, // 数据总数 limit: 10, // 每页显示的条数 curr: location.hash.replace('#!fenye=', ''), // 获取hash值作为当前页码 hash: 'fenye', // 自定义hash值 jump: function(obj, first){ if(!first){ // 非首次加载才会执行 table.reload('demo', { where: { // 其他参数 page: obj.curr, limit: obj.limit } }); } } }); }); ``` 以上代码中,`table.render()`函数用于渲染表格,`laypage.render()`函数用于渲染分页组件。其中,`table.reload()`函数用于重新加载表格数据,实现分页效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值