axapta - X++:突出显示代码中网格中的所有记录(包括未加载的记录)

标签 axapta x++ dynamics-ax-2012

我无法完成这个看似简单的任务。我有一个名为 PrintAll 的自定义复选框,我想要的是一旦它被选中,网格中的所有行都会被选中/突出显示。这是我尝试过的:

选项 1: 通过 CTRL+SHIFT+END。下面的示例通过 CTRL+A 组合。

public boolean modified()
{
    boolean ret;

    ret = super();
    #task

    if(PrintAll.value())
    {
        // CTRL+A
        element.task(#taskSelectAll);
    }

    return ret;
}

结果: 只选择加载的记录,比如 500 条记录中的 20 条。如果您向下滚动,它会继续选择即将到来的记录。

CTRL+SHIFT+END 组合在 UI 中有效,尽管它给出了这个 Box::yesNo:

You cannot select all lines including the last one, as not all the lines have been loaded at the present time. Loading all the lines may take some time!

Do you want to continue selecting lines and to load all lines now?

当我测试 taskid CTRL+SHIFT+END 得到什么时,它似乎得到 2842,不幸的是在代码中使用这个 id 作为 element.task(2842);仅突出显示第一条记录。

因此,如果我可以正确地提交 CTRL+SHIFT+END 而不是 CTRL+A,问题就会得到解决。

编辑: (部分解决方案) 运行 element.task(2842); 两次让我进入上面的警告,所以我可以单击"is"并选择所有行。有谁知道我怎么能绕过这个警告?

选项 2:尝试表单和数据源的各种属性,使其加载所有可用记录,而不是前 20 条记录。

结果: 没有任何效果。

选项 3: 也许可以在某些表单上找到作为第一个字段并且一旦选中就会选择所有记录的 CheckBox 也可以做同样的事情,但我找不到如何将其添加到我的自定义表单中?虽然也许这个选项也只选择加载的记录,所以它不会对我现在拥有的产生影响。

最佳答案

这就是最终对我有用的 ( source )。请注意,InventDim 不是我在此表单中的主要数据源。 InventTransOrigin 是一个,但它没有用。

所以我想,如果您不想向最终用户显示任何警告,您可以使用此方法:

public boolean modified()
{
    InventDim    inventDimTMP;

    boolean ret;

    ret = super();

    if(PrintAll.value())
    {
        inventDimTMP = InventDim_DS.getFirst();

        while(inventDimTMP)
        {
            InventDim_DS.findRecord(inventDimTMP);
            InventDim_DS.mark(true);
            inventDimTMP = InventDim_DS.getNext();
        }
    }

    return ret;
}

如果您希望他们看到上面提到的警告,或者这个:

public boolean modified()
{
    boolean ret;

    ret = super();

    if(PrintAll.value())
    {
        // Marks first record
        element.task(2842);
        // Marks all records
        element.task(2842);
    }

    return ret;
}

关于axapta - X++:突出显示代码中网格中的所有记录(包括未加载的记录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27857539/

相关文章:

axapta - Dynamics-AX-2009 中 DocuValue 表中的文档大小

axapta - Dynamics AX 2012 中查询范围值中的多个值

unit-testing - 如何在真实项目中的 Microsoft Dynamics AX 2012 中进行单元测试

axapta - 获取SSRS参数形式的对话框结果

axapta - 如何在 ListPageInteraction 类中获取表单对象?

axapta - Dynamics AX 2012 : How can I get, 按代码,特定表单中所有方法的列表?

axapta - ax 查询和选择有什么区别

sql - 程序性能。 SQL Server、Dynamics AX 2012 R3 CU10

axapta - Dynamics AX 2012 标签文件问题

axapta - 网格中一列中来自多个数据源的数据