如何 multi-select 以便 parent 数据源上的多个选择将显示合并的 child 数据源
How to do multi-select so that multiple selections on a parent datasource will display combined child datasource
为了讨论方便,我将使用 SalesTable/SalesLine。
我有一个包含两个数据源的简单表单,SalesTable 和 SalesLine,以及 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
属性 设置为 SalesTable
(LinkType
延迟)然后覆盖 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 错误来避免这种情况。
为了讨论方便,我将使用 SalesTable/SalesLine。
我有一个包含两个数据源的简单表单,SalesTable 和 SalesLine,以及 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
属性 设置为 SalesTable
(LinkType
延迟)然后覆盖 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 错误来避免这种情况。