自定义layui table列

最近遇到一个需求,要求可以用户自己配置layui Table的列名并可以存成模板,下次进来默认渲染成用户自定义的表格
先看Demo

动画.gif

  1. 实现这个需求用到了layui的两个组件 transfer table
    具体思路为:
  • 弹窗显示穿梭框,穿梭框是这个表格的所有列名
  • 选中之后,关闭弹窗回调选中的列名
  • 在表格配置中重新render
  • 实现

2.代码如下

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<link rel="stylesheet" href="layui-v2.5.7/layui/css/layui.css">
		<script src="js/jquery-3.4.1.min.js"></script>
		<script src="layui-v2.5.7/layui/layui.js"></script>
	</head>
	<body>
		<div id="transferBox" class="demo-transfer"></div>
		<br /><br />
		<button id="getData" class="layui-btn layui-btn-normal">生成</button>
		<br /><br />
		<table id="diyTable" lay-filter="test"></table>
	</body>
</html>

<script>
	var colJson = [{
			field: 'id',
			title: 'ID',
			width: 80,
			sort: true,
			fixed: 'left'
		},
		{
			field: 'username',
			title: '用户名',
			width: 80
		},
		{
			field: 'sex',
			title: '性别',
			width: 80,
			sort: true
		},
		{
			field: 'city',
			title: '城市',
			width: 80
		},
		{
			field: 'sign',
			title: '签名',
			width: 177
		},
		{
			field: 'experience',
			title: '积分',
			width: 80,
			sort: true
		},
		{
			field: 'score',
			title: '评分',
			width: 80,
			sort: true
		},
		{
			field: 'classify',
			title: '职业',
			width: 80
		},
		{
			field: 'wealth',
			title: '财富',
			width: 135,
			sort: true
		}
	];


	layui.use(['table', 'transfer', 'util', 'layer'], function() {
		var table = layui.table;
		var transfer = layui.transfer;
		var layer = layui.layer;
		var util = layui.util;

		var tableIns = table.render({
			elem: '#diyTable',
			height: 312,
			url: '/demo/table/user/',
			toolbar: '#toolbarDemo',
			defaultToolbar: ['filter', 'exports', 'print'],
			page: true,
			cols: [colJson]
		});

		transfer.render({
			elem: '#transferBox',
			data: colJson,
			parseData: function(res) {
				return {
					"value": res.field,
					"title": res.title
				}
			},
			id: 'transferBox'
		})

		$("#getData").click(function() {
			var getData = transfer.getData('transferBox');
			colJson = [];
			$(getData).each(function(i, item) {
				console.log(item);
				var fieldItem = {
					field: item.value,
					title: item.title
				};
				colJson.push(fieldItem);
			})

			var tableIns = table.render({
				elem: '#diyTable',
				height: 312,
				url: '/demo/table/user/',
				toolbar: '#toolbarDemo',
				defaultToolbar: ['filter', 'exports', 'print'],
				page: true,
				cols: [colJson]
			});
		})
	});
</script>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
layui table 中,可以通过使用 table.exportFile() 方法来实现导出表格数据。如果需要自定义导出内容,可以通过以下步骤实现: 1. 定义一个导出按钮,可以使用 layui 中的 button 组件。 ```html <button class="layui-btn layui-btn-sm" id="exportBtn">导出</button> ``` 2. 给按钮绑定点击事件,在点击事件中获取需要导出的数据,并进行处理。 ```javascript // 获取需要导出的数据 var data = table.cache.tableId; // 处理导出数据 var exportData = []; layui.each(data, function(index, item){ // 自定义处理逻辑 exportData.push({ id: item.id, name: item.name, age: item.age }); }); // 导出数据 table.exportFile(['ID', '姓名', '年龄'], exportData, 'xls'); ``` 在这里,我们可以通过对原始数据进行处理,生成需要导出的数据。这里的处理逻辑可以根据具体需求进行自定义。 3. 将处理后的数据导出为 Excel 文件,可以使用 table.exportFile() 方法。 ```javascript table.exportFile(['ID', '姓名', '年龄'], exportData, 'xls'); ``` 在这里,我们可以指定导出的字段名和文件类型。上述代码中,我们导出了一个名为“tableId”的表格数据,并且导出的文件类型为“xls”。 完整代码示例: ```html <button class="layui-btn layui-btn-sm" id="exportBtn">导出</button> <script> layui.use('table', function(){ var table = layui.table; // 绑定导出按钮点击事件 $('#exportBtn').on('click', function(){ // 获取需要导出的数据 var data = table.cache.tableId; // 处理导出数据 var exportData = []; layui.each(data, function(index, item){ // 自定义处理逻辑 exportData.push({ id: item.id, name: item.name, age: item.age }); }); // 导出数据 table.exportFile(['ID', '姓名', '年龄'], exportData, 'xls'); }); }); </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值