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的地方