1

我在 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”方法中手动创建的)。

4

2 回答 2

1

好的,你可以重写 task() 方法。这应该禁用查找表单上的过滤器功能。

public int task(int _taskId)
{
    int ret;

    switch(_taskId)
    {
        case 2855:
        case 2844:
        case 2837:
        case 799:
            return 0;
    }

    ret = super(_taskId);

    return ret;
}
于 2009-11-02T22:05:15.813 回答
0

只需使用动态链接而不是范围。

高温高压

于 2009-10-27T21:08:57.290 回答