自定义layui-table表头,表头添加下拉框

注意事项

1.layui-table中表头和表内容是两个table

2.layui-table中定义表头是使用[[ ]]而不是[],不然无法整整显示

3.select控件需要放在form中,并且要对form进行render渲染后才能正常显示

4.table表头和表内容没对齐,检查一下col中是否有多余的逗号

在这里插入图片描述

5.具体操作

1.导入layui.js和layui.css

2.引入layui-table

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<link rel="stylesheet" href="../public/static/public/layui/css/layui.css">
		<title></title>
	</head>
	<body>
		<script src="../public/static/public/layui/layui.js"></script>
		<script src="../public/static/jquery/2.0.0/jquery.min.js"></script>
		<table class="layui-hide" id="testLeft" lay-filter='testLeft1'></table>
	</body>
	<script>
		layui.use('table',function(){
			var $=layui.jquery,
			table=layui.table;
			var cols= [[ //表头
					{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}
					]];
			var tableIns1=table.render({
				id:'tab',
			    elem: '#testLeft',
			    url: '',
			    page: true,
			    even: false,
			    toolbar:false,
			    height: 'full',
			    limit: 99999,
			   
			    cols: cols,
			    parseData: function(res){ //res 即为原始返回的数据
			    	 
			       console.log('res',res);
			    },
			    done:function(res,curr,count){
					console.log('res1',res);
					console.log('curr',curr);
					console.log('count',count);
				}
			})
		});
	</script>
</html>

3. 使用假数据

layui-table官方示例数据下载

4.展示结果

用户信息表格

5.给性别这一列添加一个下拉选择的功能

5.1 找到“性别”这一列的表头
$('body').find('.layui-table').eq(0).find("tr").each(function(index,val){
						console.log('$(this)',$(this).find('th[data-field="sex"]'));
})
5.2 把这个表头的样式清空
$('body').find('.layui-table').eq(0).find("tr").each(function(index,val){
						console.log('$(this)',$(this).find('th[data-field="sex"]'))
						$(this).find('th[data-field="sex"]').find('div').eq(0).empty();
})
5.3 将下拉控件添加到表头
var selHtml='<form class="layui-form" style="" onsubmit="return false;"><div class="layui-input-inline" style="width: 100px;"><select name="fdhStatus" lay-filter="fdhStatus1">'
						+'<option value="">性别</option>'
						+'<option value="1">男</option>'
						+'<option value="0">女</option>'
						selHtml+='</select></div></form>';
						
						
						$(this).find('th[data-field="sex"]').find('div').css('overflow','unset');
						$(this).find('th[data-field="sex"]').find('div').append(selHtml);
				
						form.render('select'); 

样式:

<style>
			th .layui-table-cell{
				text-align: center;
			}
			.layui-table-header{
				overflow: visible;
			}
		</style>

在这里插入图片描述

5.4 添加监听事件
var sexvalue='';//获取选中的值
			form.on('select(xingbie1)', function(data){
				sexvalue=data.value;
				console.log('sexvalue',sexvalue);
				updateTable(userArr);
			});

刷新函数

			function updateTable(data){
				var checkOldarr=[];
				if(sexvalue!=''){
					checkOldarr.push(sexvalue);
				}
				var lastData=[];
				if(checkOldarr.length==1){
					var xingbie1=checkOldarr[0];
					console.log('xingbie1',xingbie1);
					var lastData1=[];
					for(var x=0;x<userArr.length;x++){
					  if(userArr[x].sex==xingbie1){
						  lastData1.push(userArr[x]);
					  }
					}
					lastData=lastData1;
				}else{
					lastData=data;
				}
				
				tableIns1.reload({
					id:'tab',
					elem: '#testLeft',
					url: './tabletest.json',
					page: true,
					even: false,
					toolbar:false,
					height: 'full',
					limit: 9999,
								   
					cols: cols,
					parseData: function(res){ //res 即为原始返回的数据
						 
					   console.log('res',res);
					   if(res.code==1){
						  
					   }
					   return {
						   "code":res.code,
						   "msg":res.msg,
						   "count":res.count,
						   "data":lastData
					   };
					   
					},
					done:function(res,curr,count){
						console.log('res1',res);
						console.log('curr',curr);
						console.log('count',count);
						$('body').find('.layui-table').eq(0).find("tr").each(function(index,val){
							console.log('$(this)',$(this).find('th[data-field="sex"]'))
							$(this).find('th[data-field="sex"]').find('div').eq(0).empty();
							
							
							var selHtml='<form class="layui-form" style="" onsubmit="return false;"><div class="layui-input-inline" style="width: 100px;"><select name="xingbie" lay-filter="xingbie1">'
							+'<option value="">性别</option>';
							if(sexvalue==""){
								selHtml+='<option value="男">男</option>'
								+'<option value="女">女</option>'
							}else if(sexvalue=='女'){
								selHtml+='<option value="男">男</option>'
								+'<option value="女" selected>女</option>'
							}else if(sexvalue=='男'){
								selHtml+='<option value="男" selected>男</option>'
								+'<option value="女">女</option>'
							}
							
							selHtml+='</select></div></form>';
							
							
							$(this).find('th[data-field="sex"]').find('div').css('overflow','unset')
							$(this).find('th[data-field="sex"]').find('div').append(selHtml);
							
							form.render('select'); 
							
						});
					}
				});
			}

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
layui-table添加表头筛选的方法如下: 1.设置表头筛选的数据 可以通过设置`toolbar`属性来设置表头的筛选数据,例如: ```javascript var tableIns = table.render({ elem: '#test' ,url:'/demo/table/user/' ,toolbar: '#toolbarDemo' //开启头部工具栏,并为其绑定左侧模板 ,cols: [[ {type: 'checkbox', fixed: 'left'} ,{field:'id', title:'ID', width:80, sort: true} ,{field:'username', title:'用户名', width:120} ,{field:'email', title:'邮箱', width:150} ,{field:'sign', title:'签名'} ,{field:'sex', title:'性别', width:80} ,{field:'city', title:'城市', width:100} ,{field:'experience', title:'积分', width:80, sort: true} ,{field:'logins', title:'登入次数', width:100, sort: true} ,{field:'status', title:'状态', width:100, sort: true} ,{field:'ip', title:'IP', width:120} ,{field:'create_time', title:'创建时间', width:150, sort: true} ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150} ]] ,page: true }); ``` 在上面的代码中,`toolbar`属性绑定了一个左侧模板(即下面代码中的`#toolbarDemo`),在该模板中可以设置表头的筛选数据,例如: ```html <script type="text/html" id="toolbarDemo"> <div class="layui-btn-container"> <button class="layui-btn layui-btn-sm" lay-event="add">添加</button> <button class="layui-btn layui-btn-sm" lay-event="delete">删除</button> </div> <div class="layui-inline"> <label class="layui-form-label">城市</label> <div class="layui-input-inline"> <select name="city"> <option value="">全部</option> <option value="0">北京</option> <option value="1">上海</option> <option value="2">广州</option> <option value="3">深圳</option> <option value="4">杭州</option> </select> </div> </div> <div class="layui-inline"> <label class="layui-form-label">状态</label> <div class="layui-input-inline"> <select name="status"> <option value="">全部</option> <option value="0">正常</option> <option value="1">禁用</option> </select> </div> </div> </script> ``` 在上面的代码中,我们设置了两个下拉框,分别用于筛选城市和状态。 2.监听表头筛选事件并重新加载表格数据 在表头筛选数据改变时,我们需要监听表头的`lay-filter`属性,并重新加载表格数据。在下面的示例中,我们监听了两个下拉框的`select`事件,并重新加载了表格数据: ```javascript //监听表头筛选数据改变事件 table.on('toolbar(test)', function(obj){ var city = $('select[name="city"]').val(); var status = $('select[name="status"]').val(); table.reload('test', { where: { //设定异步数据接口的额外参数,任意设 city: city, status: status } ,page: { curr: 1 //重新从第 1 页开始 } }); }); ``` 在上面的代码中,我们通过`$('select[name="city"]').val()`和`$('select[name="status"]').val()`获取了两个下拉框的值,并重新加载了表格数据。其中,`table.reload()`方法中的`test`参数表示表格的ID,可以根据实际情况进行修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值