帖子
帖子
用户
博客
课程
显示全部楼层
6
帖子
1
勋章
114
Y币

动态设置字表中的下拉框(枚举)数据源问题

[复制链接]
发表于 2024-3-4 11:26:58
本帖最后由 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]







143
帖子
2
勋章
4万+
Y币
发的场景和我们一个yonmaster考核案例有点像   一个帖子描述一个具体的问题
6
帖子
1
勋章
114
Y币
使用什么事件设置下拉的数据源
143
帖子
2
勋章
4万+
Y币
baiyaoming · 2024-3-5 09:49使用什么事件设置下拉的数据源

setDataSource
6
帖子
1
勋章
114
Y币
本帖最后由 baiyaoming 于 2024-3-5 10:33 编辑

gridModel.getEditRowModel().get("colorMark").setState('dataSourceMode', 'local');
gridModel.getEditRowModel().get("colorMark").setDataSource(colorMarkEnumArray);
这个是方法,我想问的是 用什么事件来触发,也就是说在何时 触发这个事件去设置数据源
143
帖子
2
勋章
4万+
Y币
baiyaoming · 2024-3-5 10:28gridModel.getEditRowModel().get("colorMark").setState('dataSourceMode', 'local');
gridModel.getEditRowModel().get("colorMark").setDataSource(colorMarkEnumArray);
这个是方法,我想问的是 用什么事件来触 ...

操作行的动作都考虑  比如  afterDeleteRow
您需要登录后才可以回帖 登录

本版积分规则