我在 Axapta 3.0 中创建了一个自定义查找表单,用户可以在其中从 ProdRoute 数据源中选择一个 OprId。在显示查找之前,ProdId 已设置并且用户不得更改。用户只能从具有有效 ProdId 的生产订单的 ProdRoute 中选择一个 OprId。根据文档,可以通过锁定范围来防止用户更改查询。我已经这样做了:
qbrProdId.value(queryValue(_prodId));
qbrProdId.status(RangeStatus::Locked);
这里 qbrProdId 是 QueryBuildRange 类型的变量,_prodId指定ProdId。
当显示查找并且用户尝试更改过滤器时,ProdId 被锁定。好的。但是,当用户在查找的 ProdId 字段上按 Ctrl+F 时,或者如果用户单击工具栏上的 Search,则可以输入不同的 ProdId。
我怎样才能防止这种情况?
我曾考虑将查找网格中的 ProdId 字段更改为“显示”类型,而不是数据源字段。但是没有更好的解决方案吗?
(顺便说一下,查询不是自动创建的,而是在表单数据源的“init”方法中手动创建的)。