如何 multi-select 以便 parent 数据源上的多个选择将显示合并的 child 数据源

How to do multi-select so that multiple selections on a parent datasource will display combined child datasource

为了讨论方便,我将使用 SalesTable/SalesLine

我有一个包含两个数据源的简单表单,SalesTableSalesLine,以及 SalesLine已加入 SalesTable。有一个 header 和线条网格。 header 网格有 属性 MultiSelect = Yes

当我从网格中 select 3 SalesTable 记录时,有没有办法让它显示所有 SalesLine 下部网格中来自三个 selected SalesTable 记录的一些原始样式的记录?

我知道我可以通过某些代码以某种方式完成此操作,但我认为这可以通过设计模式以某种方式通过表单和 DataSource 属性来完成吗?对我来说,您可以 select/highlight 三个 header 记录,而 AX 只会使 lines-grid 仅显示 header:child 行对之一。

活动记录只有一个,连接是用这条记录完成的。您将不得不编写一些代码。您需要根据父数据源选择在子数据源上添加范围。

您必须编写代码,标准的动态链接行为有充分的理由不支持此功能。

请注意,不标准的表单行为可能会使用户感到困惑。选择 header table 中的所有记录也很容易,但效果不佳!

像往常一样,将 SalesLine 数据源的 JoinSource 属性 设置为 SalesTableLinkType 延迟)然后覆盖 linkActive SalesLine 数据源的方法:

public void linkActive()
{
    SalesTable table;
    QueryBuildDataSource ds = this.query().dataSourceNo(1);
    ds.clearDynalinks();
    ds.clearRanges();
    for (table = salesTable_ds.getFirst(1) ? salesTable_ds.getFirst(1) : salesTable_ds.cursor(); table; table = salesTable_ds.getNext())
    {
        ds.addRange(fieldNum(SalesLine,SalesId)).value(queryValue(table.SalesId));
    }
    super();
}

清除动态链接,并通过代码为标记或当前记录添加范围。

如果标记超过几百个header,SQL表达式可能会溢出。如果选择了太多 header,您可能应该尝试通过抛出更多 user-friendly 错误来避免这种情况。