繁体   English   中英

Dynamics AX:在代码中禁用表单中的数据源,同时能够使用高级过滤/排序选项

[英]Dynamics AX: Disable datasource from form in code while being able to use advanced filter/sort option

我修改了InventTable表单,以便用户可以根据默认订单设置设置表单中的“已停止”状态过滤项目。 根据两个复选框的值,他们会获得“可购买”商品,“可销售”商品,所有商品或已阻止商品的列表,以供销售或购买。

我在代码中添加了InventItemSalesSetup和InventItemPurchSetup数据源,并在用户选中或取消选中复选框时启用或禁用它们。

除非禁用其中一个数据源,否则一切正常。 然后“高级过滤/排序”选项停止工作。 我收到错误:“数据源未启用”。

该错误来自SysQueryForm表单的方法“saveCueEnabled”。 当它打电话:

if (!CueRun::canSaveQueryAsCue(this.args().caller()))
    return false;

哪个电话:

static boolean canSaveQueryAsCue(QueryRun qr)
{
    int numOfDataSources, i;
    QueryBuildDataSource ds;
    Query q;
    Common cursor;
    ;

    if (!qr)
    return false;

    q = qr.query();
    if (!q)
        return false;

    numOfDataSources = q.dataSourceCount();
    for(i = 1; i <= numOfDataSources; i++)
    {
        ds = q.dataSourceNo(i);
        if(ds.dynalinkCount() > 0)
            return false;

        // Check if it is temp
        cursor = qr.getNo(i);
        if (cursor.dataSource() && cursor.isTmp())
            return false;
    }

    return true;
}

当它获取查询中的数据源数量时,“dataSourceCount”方法也会返回带有已禁用数据源的计数,当它获取循环中已禁用数据源的QueryBuildDataSource时,会得到一个空DS并且当它崩溃时崩溃它检查它是否是临时表。

我已经解决了在“saveCueEnabled”代码上添加额外if的问题,但我想知道是否有一种方法可以启用/禁用数据源而不会出现此错误。

我希望我能很好地解释自己,谢谢!

我能提出的唯一解决方案要求您修改canSaveQueryAsQue()。

对for循环的此更新很简单,应该可以解决您的问题。

for(i = 1; i <= numOfDataSources; i++)
{
    ds = q.dataSourceNo(i);
    if(ds && ds.dynalinkCount() > 0)
        return false;

    // Check if it is temp
    cursor = qr.getNo(i);
    if (cursor.dataSource() && cursor.isTmp())
        return false;
}

我没有测试过这段代码,但我在其他情况下使用了类似的代码。 希望有所帮助!

建议的编辑实际上不起作用,因为'ds'变量在测试时仍然是'truthy'。

以下似乎有效:

for(i = 1; i <= numOfDataSources; i++)
{
    ds = q.dataSourceNo(i);
    if(ds.enabled() && ds.dynalinkCount() > 0)
        return false;

    // Check if it is temp
    if(ds.enabled())
    {
        cursor = qr.getNo(i);
        if (cursor.dataSource() && cursor.isTmp())
            return false;
    }
}

将“.enabled()”属性添加到测试允许代码根据请求跳过禁用的数据源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM