1

我有两个嵌套循环,每个循环使用不同的节点来获取数据:

1) <?for-each-group:/DATA/TEST/ROW;./target_test?>  
2) <?for-each:/DATA/TEST2/ROW?>

为每个 target_test 循环使用第一组,我生成一页报告,并使用第二组填充一个表格。此时,如果我只有一个 target_test,则报告运行良好,但如果我有更多 target_test,则该表将填充所有 target_test,而不仅仅是引用上层循环的那个。因此,例如,我有一个带有 target_test = data1 的页面,该页面在表中还包含 target_test = data2、target_test = data3 等。

我的问题是:是否可以检查第二个循环中的 target_test 是否等于第一个循环中的目标测试?有了这个条件,当条件不成立时,我可以简单地隐藏表格的行。

4

2 回答 2

2

您正在告诉代码执行此操作:

对于 test 中具有不同 target_test 值的 每一行,循环遍历 TEST2 中的每一行。

所以这是预期的行为。您没有指定外部循环 target_test 应该如何影响内部循环。

你可能想要这样的东西:

<?for-each-group:/DATA/TEST/ROW;./target_test?>  
<?for-each:/DATA/TEST2/ROW[target_test=current-group()/target_test]?>
do something
<?end for-each?>
<?end for-each-group?>

如果这没有帮助,请提供一个带有数据样本的可重现示例。

于 2019-06-13T13:09:46.677 回答
1

最简单的方法似乎是在外循环中使用变量,将目标测试值存储到变量(set_variable)中,然后在第二个循环中检查它。

但也可以在第二个循环中仅过滤与父循环匹配的记录。使用过滤器(方括号),无论有无变量,这都是可能的。

于 2019-06-13T00:47:02.490 回答