layui 数据表格下拉框_LayUi- 动态表格table中下拉框Select的设置和监听

LayUi中动态表格中可以使用 templet自定义列模板 对单元格添加其他元素 ,添加下拉框相对麻烦些,没有自带的。

e4cfc4e9a5082031fe9fd9403a6b7db7.png

1.添加编辑器

我们使用绑定模版选择器的方法:

在table.render()中 指定列(cols)的templet属性,并添加模板的html代码,例如:

b0f28c826c2827eb82d43d000ef92953.png

{ rowspan: 2, title: '新建及改造工作状态', templet: '#editState' }

未开工

在建

完工

已验收

(使用d.fileName指定字段,用于绑定已有的值; 另外必须设置lay-filter才可以进行监听)。

添加后样式不对,需要自己调整一下样式使得下拉框与单元格cell刚好合适嵌入,并且需要设置超出长宽时也显示,否则下拉时不会显示:

td .layui-form-select{

margin-top: -10px;

margin-left: -15px;

margin-right: -15px;

}

.layui-table-cell {

overflow: visible!important;

}

因为设置了全局的.layui-table-cell,会影响到其他table元素,比如表头的th,我这里表头原本是自适应宽度、超出隐藏,手动拖动调整宽度的,所以再重设一下表头超出隐藏:

.layui-table-view .layui-table th{

overflow:hidden;

}

2.监听下拉框

因为下拉框是属于form元素,不是属于table元素,所以监听方法需要放在layui.use('form')中,而不是放在layui.use('table')中

layui.use('form', function () {var form =layui.form;//监听下拉框编辑

form.on('select(editStateS)', function (data) {//获取当前行tr对象

var elem = data.othis.parents('tr');//第一列的值是Guid,取guid来判断

var Guid= elem.first().find('td').eq(1).text();//选择的select对象值;

var selectValue =data.value;//这里的JsonDataInti是我自定义的table中数据的缓存数据,下拉数据修改时赋值到这一行缓存数据

for (i = 0; i < jsonDataInit.length; i++) {if (jsonDataInit[i].Guid==Guid) {

jsonDataInit[i].NewReformStatus=selectValue; //更新被修改的行数据

}

}

})

});

3.已经存在的数据绑定至下拉框:

这里就又需要放在layui.use('table')中了,在table.render的done函数中来编写绑定逻辑:

done: function (res, curr, count) {res.data.forEach(function (item, index) {//根据已有的值回填下拉框

layui.each($("select[name='editStateS']", ""), function (index, item) {var elem =$(item);

elem.next().children().children()[0].defaultValue = elem.data('value');//elem.val(elem.data('value'));

});

table.render('select');

}

网上看了一些做法是使用elem.val(elem.data('value')); 来进行赋值,但是试了发现并不行,于是查看了一下生成的html代码:

8f542994dc61bdd7a4466ab30436bc1c.png

不知为何生成了两个,,一个select标签、一个input标签,页面显示的是input标签的内容。所有我这里改成了修改input中的内容,使用elem.next().children().children()[0].defaultValue = elem.data('value');来进行赋值。

完成的效果:

976b95c7f1e573477c28e7e89c20a7f8.png

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值