layui table表格单元格edit编辑新增功能

提问 未结 0 194
单身狗278
单身狗278 2020-4-23
悬赏:20飞吻
版本:扩展组件 111 浏览器:11
edit编辑新增的功能:
1、下拉框
2、日期时间选择框

组件地址: https://fly.layui.com/extend/tableEdit/


layui.config({
base: '../'
}).extend({
tableEdit:'js/tableEdit'
}).use(['table','tableEdit','layer'], function () {
var table = layui.table,tableEdit = layui.tableEdit,$ = layui.$;
var params = [{name:1,value:"张三1"},{name:2,value:"张三2"},{name:3,value:"张三3"},{name:4,value:"张三4"},{name:5,value:"张三5"}];
var cols = table.render({
elem: '#tableId'
,id:'id'
,url:'../json/data.json'
,height: 'full-90'
,page: true
,cols: [[
{type:'checkbox'}
,{field:'name',title: '姓名',width:120}
//select(下拉框)date(时间选择框)
,{field:'danxuan',align:'center', title: '单选',width:120,event:'danxuan',select:{data:params}}
//data 为下拉框数据 enabled => true:多选,false:单选。默认为false
,{field:'duoxuan',align:'center', title: '多选',width:120,event:'duoxuan',select:{data:params,enabled:true,isRemove:true}}
//dateType表示日期时间格式,date为“yyyy-MM-dd”,datetime为“yyyy-MM-dd HH:ss:mm”
,{field:'birthday', title: '生日',width:120,event:'birthday',date:{dateType:'date'}}
//cascadeSelectField字段为级联开关字段(存在该字段则级联,否则不级联)
,{field:'xlkjl', title: '下拉框联动(上级)',width:150,event:'xlkjl',select:{data:params,cascadeSelectField:'xialaxiaji'}}
,{field:'xialaxiaji', title: '下拉框联动(下级)',width:150,event:'xiaji',select:{data:params}}
,{field:'rqjl', title: '日期联动(上级)',width:150,event:'rqjl',date:{dateType:'date',cascadeSelectField:'rqxiaji'}}
,{field:'rqxiaji', title: '日期框联动(下级)',width:150,event:'rqxiaji',select:{data:params}}
]]
}).config.cols;

/**
* 参数cols是table.render({})中的cols属性值
* aop代理是基于event点击事件进行操作的,因此cols中务必开启event点击事件!
**/
var aopTable = tableEdit.aopObj(cols); //获取一个aop对象
/**
* 注意:
* 1、 aopTable.on('tool(xxx)',function (obj) {})
* 2、 table.on('tool(yyy)',function (obj) {})
* 如果1中的xxx与2中的yyy字符串相同时,不能同时用,用了会造成后调用者覆盖前调用者。
* 应该直接用1来代替2,因为1中包含了2中的事件。
* 如果不相同,则可以同时使用。
**/
aopTable.on('tool(tableEvent)',function (obj) {
var field = $(this).data('field');
var thisValue = obj.value;
if(thisValue){
//这里是测试,所以如果是数组,就取第一个数组元素。
thisValue = Array.isArray(thisValue) ? thisValue[0] : thisValue;
}
var update = {};
update[field] = thisValue && typeof thisValue === 'string' ? thisValue : thisValue.value;
//把value更新到行中
obj.update(update);
});


/**
* 级联下拉框 => 点击事件生成下拉框之前的回调函数
* 主要用于 => 动态获取单元格下拉数据
* tableEvent => table的lay-filter属性值
* 如示例代码所示
*/
tableEdit.on('clickBefore(tableEvent)',function () {
var cascadeSelectData = $(this).attr("cascadeSelect-data"); //级联数据
var cascadeSelectField = $(this).attr("cascadeSelect-field"); //级联字段
cascadeSelectData = JSON.parse(cascadeSelectData);
if(Array.isArray(cascadeSelectData)){
cascadeSelectData = cascadeSelectData[0];
}
//下拉数据 只可ajax同步请求后台
if(cascadeSelectField === 'rqjl'){ //日期级联下拉框
if(cascadeSelectData === '2020-05-11'){
aopTable.cascadeSelectConfig = {
data:[{name:1,value:'语文'},{name:2,value:'数学'},{name:3,value:'英语'},{name:4,value:'物理'},{name:5,value:'化学'}],
enabled:false //单选
};
}else {
aopTable.cascadeSelectConfig = {
data:[{name:6,value:'政治'},{name:7,value:'地理'},{name:8,value:'历史'},{name:9,value:'生物'},{name:10,value:'音乐'}],
enabled:true //多选
};
}
}else {
if(cascadeSelectData.name+'' === '1'){
aopTable.cascadeSelectConfig = {
data:[{name:11,value:'贵州'},{name:12,value:'云南'},{name:13,value:'四川'},{name:14,value:'湖南'}],
enabled:false //单选
};
}else {
aopTable.cascadeSelectConfig = {
data:[{name:15,value:'荆州'},{name:16,value:'扬州'},{name:17,value:'杭州'},{name:18,value:'苏州'}],
enabled:true //多选
};
}
}
});
});
</script>
回帖
  • 消灭零回复