|
本帖最后由 baiyaoming 于 2024-3-4 11:26 编辑
场景描述:
子表可以行编辑,其中子表有个下拉框(物料颜色标记),是枚举类型,该子表一共可以录入5条数据,对于这枚举的五个类型(1: 红色,2: 绿色 3: 蓝色 4:白色 5: 黑色),当前行枚举如果选择后,其他行就不能选择该枚举类型。如果第一行选择5,那么其余4行只能选择其他的枚举类型,如果第二行选择1,2,那么其他行只能选择 3,4,5。
实现思路:
获取枚举数据源,得到全部枚举数组,gridModel.getEditRowModel().get("colorMark").get("dataSource")
1、在插入、整行后
获得已存在的行,gridModel.getRows()
剔除已选择行的枚举记录,最终得到数据源。使用事件监听给下拉框设置数据源。
let colorMarkEnumArray = JSON.parse(gridModel.getColumn("colorMark").enumArray);
let existedRows = gridModel.getRows();
// 去除已存在的枚举
for(let v1 in colorMarkEnumArray ) {
for(let v2 in existedRows) {
if(existedRows[v2].colorMark!= undefined && existedRows[v2].colorMark!= '' && existedRows[v2].colorMark=== colorMarkEnumArray [v1].value) {
colorMarkEnumArray .splice(v1, 1);
}
}
}
// 设置数据源
gridModel.getEditRowModel().get("colorMark").setState('dataSourceMode', 'local');
gridModel.getEditRowModel().get("colorMark").setDataSource(colorMarkEnumArray);
2、复制行
设置颜色值为空,执行 1 逻辑。
3、删行
回收删除的记录枚举值,重新设置数据源;
问题:
使用了很多事件,出现一些莫名其妙的问题,有以下疑问。
事件使用(应该使用哪个事件),
(1)下拉框在子表的编辑模式,是不是listModel类型模型,下拉框的数据源,使用何种事件,beforeSelect 还是 beforeValueChange
viewModel.get('productDetail0001List').getEditRowModel().get('colorMark').on('beforeSelect或者beforeValueChange', function (data) {
处理代码 .....
return true;
});
使用上述事件,可以选择,但是在列表中值不显示,还有一些其他的莫名其妙的问题
(2)使用 gridModel的[size=1.5em]beforeCellValueChange 问题如上
[size=1.5em]
|
|