D365 X++ 画面列过滤条件不可编辑问题:.status(RangeStatus::Locked) 后无法编辑
在 D365 的 X++ 中,通过 .status 方法设置画面列的过滤条件,可以使用以下代码实现:
- 首先,使用 .status(RangeStatus::Locked) 方法设置过滤条件为不可编辑状态:
QueryBuildRange range;
range = queryBuildDataSource.addRange(fieldNum(Table, Status));
range.status(RangeStatus::Locked);
- 然后,在需要重新编辑过滤条件的地方,使用 .status(RangeStatus::Open) 方法将过滤条件设置为可编辑状态:
range.status(RangeStatus::Open);
在以上代码中,queryBuildDataSource 是查询构建数据源的对象,fieldNum(Table, Status) 表示需要设置过滤条件的列。首先,通过 .addRange 方法添加一个新的过滤范围,然后使用 .status 方法设置过滤条件的状态。
请注意,以上代码只是一个示例,具体的实现方式可能会因为你的具体需求和数据模型的不同而有所不同。
问题:
在某些情况下,使用 .status(RangeStatus::Locked) 将过滤条件设置为不可编辑状态后,即使使用 .status(RangeStatus::Open) 重新设置状态,过滤条件仍然无法编辑。
解决方法:
这个问题可能是由于其他代码逻辑导致的,需要进一步分析代码,找到导致无法编辑的具体原因。例如,可能是其他代码逻辑在设置过滤条件后重新锁定了过滤条件,或者其他代码逻辑对过滤条件进行了限制。
代码示例:
以下是解决该问题的代码示例,其中包含了对过滤条件的锁定和解锁操作:
QueryBuildRange range;
range = queryBuildDataSource.addRange(fieldNum(Table, Status));
// 设置过滤条件为不可编辑状态
range.status(RangeStatus::Locked);
// ... 其他代码逻辑 ...
// 解锁过滤条件,允许用户编辑
range.status(RangeStatus::Open);
// 重新锁定过滤条件,防止用户修改
range.status(RangeStatus::Locked);
注意:
- 以上代码仅供参考,具体的代码实现需要根据实际情况进行调整。
- 需要仔细检查代码逻辑,找到导致过滤条件无法编辑的具体原因。
- 在修改代码之前,请备份数据,防止数据丢失。
原文地址: https://www.cveoy.top/t/topic/qeZt 著作权归作者所有。请勿转载和采集!