0

我是peoplesoft的新手。我需要帮助来理解行集,并且我有 3 个级别的要求。

在级别 1 我有一个复选框,当我打开一个组件时,级别 1 上的复选框的值应该被传递并显示到所有行的级别 2 网格。

例如

level0 - record1 level1 - record2 (滚动区)

level2 - record3(网格)

当我访问该页面时,它应该具有这样的值

Record2.field1 = Y => Row1 Record3.field1 = Y Row2 Record3.field1 = Y


Record2.field1 = N => Row1 Record3.field1 = N


我已经在 level2 record.field rowinit peoplecode 事件中编写了代码。但问题是在级别 0 中也使用了相同的记录字段。有没有一种方法可以避免使用 for 循环,因为网格中可能有 n 行,这可能会在页面打开期间产生性能问题。

提前致谢,

4

1 回答 1

1

Rowinit 将为滚动中的每一行触发。因此,如果您在 rowinit 中有一个循环,则将为每一行执行循环。

如果您希望仅在组件加载期间设置该复选框,您可以在 Component PostBuild 中添加人员代码。

&rsLevel1 = GetLevel0()(1).GetRowSet(Scroll.Level1);
for &nCnt1 = 1 to &rsLevel1.activerowcount
   &rsLevel2 = &rsLevel1(&nCnt1).GetRowset(Scroll.Level2);
   for &nCnt2 = 1 to &rsLevel2.activerowcount
      &rsLevel2(&nCnt2).Level2.Check_box.value = &rsLevel1(&nCnt1).Level1.Check_box.value
   end-for;
end-for;
于 2017-04-18T20:28:23.220 回答