实现layui表格关联x-select显示下拉框

 实现layui表格关联x-select显示下拉框:

实现代码如下:


<html>
<div class="layui-field-box ">
    <table class="layui-hide layui-table" id="demoTable"
           lay-filter="demoTable"></table>
</div>
</html>

<script type="text/html" id="data1Tpl">
    <div id="data1{{d.id}}" name="data1" class="data1Class" ></div>
</script>

<script type="text/html" id="data2Tpl">
    <div id="data2{{d.id}}" name="data2" class="data2Class" ></div>
</script>

<script data-th-inline="none" type="text/javascript">
layui.use(['jquery','table', 'xmSelect'], function () {
    var $ = layui.jquery,
        table = layui.table,
		xmSelect = layui.xmSelect,
        tableIns;
		
loadDemoTable();
function loadDemoTable() {

	let data =[[{data1Value:'data1',},{data2:'data2'}]]
    table.render({
        elem: '#demoTable',
        id: 'demoTable',
        data: data,
        page: false,
        even: true,
        cols: [[ 
            {field: 'data1', title: '数据1', templet: '#data1Tpl'},
            {field: 'data2', title: '数据2', templet: '#data2Tpl'}
        ]],
        none: "无数据",
        done: function (res, curr, count) {
            let tableView = this.elem.next();

            for (let i = 0; i < res.data.length; i++) {
                let selectData = res.data[i];
                requestSelect(selectData.id, res.data);
				
                //初始化数据回显
                if (selectData.data1 !== "") {
                    data1Select.setValue([
                        {name: selectData.data1Name, value: selectData.data1},
                    ])
                }
                if (selectData.data2 !== "") {
                    data2Select.setValue([
                        {name: selectData.data2Name, value: selectData.data1},
                    ])
                }
            }
			
			//表格下拉框显示
            tableView.find(".layui-table-body, .layui-table-box, .layui-table-cell").css('overflow', 'visible');


        }
    })

}

//下拉框
    var data1Select;
    var data2Select;
    function requestSelect(selectId, objData ) {

		//下拉选择内容
		 let selectData = [{name: '张三', value: 1},{name: '李四', value: 2},{name: '王五', value: 3}];
         data1Select = xmSelect.render({
            el: '#data1' + selectId,
            filterable: true,
            radio: true,//单选
            paging: true,//分页
            filterMethod: function (val, item, index, prop) {
			//搜索
                if (val == item.value) {//把value相同的搜索出来
                    return true;
                }
                if (item.name.indexOf(val) != -1) {//模糊匹配
                    return true;
                }
                return false;
            },
            data: selectData,
            on: function (data) {

                var arr = data.arr;
                if (arr.length > 0) {
                    for (let i = 0; i < objData.length; i++) {
                        let _data = objData[i]
                        if (selectId == _data.id) {
						//选中赋值
                            _data.data1 = arr[0].value;
                            _data.data1Name = arr[0].name;
                            break;
                        }
                    }
					//重载表格
                    table.reload('demoTable', {
                        data: objData
                    })
                }

            },
        })


         data2Select = xmSelect.render({
            el: '#data2' + selectId,
            filterable: true,
            radio: true,
            paging: true,
            filterMethod: function (val, item, index, prop) {
                if (val == item.value) {
                    return true;
                }
                if (item.name.indexOf(val) != -1) {
                    return true;
                }
                return false;
            },
            data: selectData,
            on: function (data) {
                //arr:  当前多选已选中的数据
                var arr = data.arr;
                //change, 此次选择变化的数据,数组
                var change = data.change;
                //isAdd, 此次操作是新增还是删除
                var isAdd = data.isAdd;
                if (arr.length > 0) {
                    for (let i = 0; i < objData.length; i++) {
                        let _data = objData[i]
                        if (selectId == _data.id) {
                            _data.data2 = arr[0].value;
                            _data.data2Name = arr[0].name;
                            break;
                        }
                    }
                    table.reload('demoTable', {
                        data: objData
                    })
                }

            },
        })
    }
})
</script >
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值