layui table内嵌入select

layui数据表格没有支持select的参数,因此需要手动加入模板进去到td中,具体使用方法如下

HTML
<script type="text/html" id="selectTool">
		 <select name="materialtype" lay-filter="materialtype" id="materialtype">
					<option value="">请选择或输入</option>
		        {{# layui.each(d.lstSet, function(index, item){ }}
					<option value="{{ item.SettingKey }}">{{ item.SettingValue }}</option>
		        {{# }); }}
		    </select>
</script>

其中:d.lstSet是后台传表格数据时带入的一个数组。
关于{{#等字符是layui的模板引擎,参考地址:https://www.layui.com/doc/modules/laytpl.html
如果使用了数据表格layui-table则不要自定义分隔符,会乱码

JS
function getMateralNameList() {
			var re = table.render({
				elem: '#material-name-list',
				url: materialNameListUrl,
				cellMinWidth: 80,
				// width: '150px',
				id: 'tongMaterialinfoID',
				height: '400px',
				toolbar: '#toolbarAdd', //开启头部工具栏,并为其绑定左侧模板
				defaultToolbar: [], //去掉打印等功能
				end: function(e) {
					form.render();
				},
				done: function(res) {
					form.render('select');
					tongMaterialNameData = res.data;
					setTimeout(function(){
						tongMaterialNameData.forEach(function(item, index) { //根据已有的值回填下拉框
							layui.each(o("select[name='materialtype']", ""), function(index, item) {
								var elem = o(item);
								elem.next().children().children()[0].defaultValue = tongMaterialNameData[index].MaterialName;
							});
							table.render('select');
						})
					},1000)
				},
				cols: [
					[{
							field: 'No',
							title: 'No',
							type: 'numbers',
							width: 40,
						}]
				]
			});
		}
		//select改变对应的表格数据里面的值也要改变
		form.on('select(materialtypeFilter)', function(data) {
			//获取当前行tr对象
			var elem = data.othis.parents('tr');
			//第一列的值是Guid,取guid来判断
			var Guid = elem.first().find('td').eq(0).text();
			//选择的select对象值;
			var selectValue = data.value;
			for (i = 0; i < tongMaterialNameData.length; i++) {
				if (tongMaterialNameData[i].ID == Guid) {
					tongMaterialNameData[i].MaterialType = selectValue; //更新被修改的行数据
				}
			}
		})
CSS
/* 防止下拉框的下拉列表被隐藏---必须设置--- 此样式和表格的样式有冲突  */
/* 防止下拉框的下拉列表被隐藏---必须设置--- 此样式和表格的样式有冲突 
如果表格列数太多 会出现错乱的情况 目前我的解决方法是忽略下拉框的美化渲染 <select lay-ignore> */
#tongConfig #materialNameList .layui-table-cell {
	overflow: visible;
}
#tongConfig #materialNameList .layui-table-box {
	overflow: visible;
}

#tongConfig #materialNameList .layui-table-body {
	overflow: visible;
}

/* 设置下拉框的高度与表格单元相同 */
#tongConfig #materialNameList td .layui-form-select {
	margin-top: -10px;
	margin-left: -15px;
	margin-right: -15px;
}

#tongConfig #materialNameList .layui-table-view .layui-table th{
        overflow:hidden;
}
/* 去掉select td的悬浮下拉框 */
#tongConfig #materialNameList .layui-table-grid-down{
	display: none;
}

上面的仅供参考,使用时定位到自己table的地方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Swn_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值