PeopleSoft使页面只读 - 特定的行

时间:2012-05-30 19:53:21

标签: peoplesoft rowset

我有一个包含父记录和几个子记录的页面。有一个字段(级别1)是一个复选框,它是一个“最终草稿”字段 - 在检查完之后,不能再进行任何更改(即使在校正模式下);必须插入新的行/ effdt。儿童记录都在2级。现在,我所拥有的是:

&RS7 = GetRowset(Scroll.AVZ_JD_DTL_TBL);
&final_draft = &RS7.GetRow(1).getrecord(Record.AVZ_JD_DTL_TBL).getfield     (Field.FINAL_VALUE).Value;

If &final_draft = "Y" Then
  Page.AVZ_JD_DTL_PG.DisplayOnly = True;
 Else
  Page.AVZ_JD_DTL_PG.DisplayOnly = False;
 End-If;

所以,假设我处于校正模式,我有3行 - 例如2012年1月1日,2012年5月1日和6/1/2012,并选中了复选框5/1的行/ 2012,因为我在生效日期“分页”/“滚动”,我希望2012年1月1日的行可编辑,日期为5/1/2012的行只读,然后是6行/ 1/2012可编辑。

我想也许我需要单独“禁用”每个行集,而不是整个页面。我只是围绕行集/卷轴,在程序的早期我正在做一些操作:

& RS1 = GetLevel0()。GetRow(1)。GetRowset(Scroll.AVZ_JD_DTL_TBL).GetRow(1).GetRowset(Scroll.AVZ_JD_RESP_TBL);    & RS2 = GetLevel0()。GetRow(1)。GetRowset(Scroll.AVZ_JD_DTL_TBL).GetRow(1)。GetRowset(Scroll.AVZ_JD_EXPR_TBL);

& RS1.Sort(AVZ_JD_RESP_TBL.ORDER_SEQ,“A”);    & RS2.Sort(AVZ_JD_EXPR_TBL.ORDER_SEQ,“A”);

问题是,如何知道我当前正在查看哪一行,然后获取该行的FINAL_VALUE字段,然后灰显/禁用该页面上的所有内容? (当然,如果你超过那个没有勾选复选框的那个,那么一切都需要再次编辑)。

由于

1 个答案:

答案 0 :(得分:0)

你可以遍历1级scolls寻找复选框,然后如果找到循环通过2级滚动,然后将该行的 Active 属性设置为false。

我没有可用于测试此代码的PeopleSoft系统,但它会是这样的:

&LEVEL0 = your level 0 record
&LEVEL1 = &LEVEL0.GetRowset(Scroll.AVZ_JD_DTL_TBL); /* handle to level 1 */
For &I = 1 To &LEVEL1.ActiveRowCount
    if &LEVEL1(&I).final_draft = "Y" then   /* check box is on */
        &LEVEL2 = &LEVEL0(1).&LEVEL1(&I).GetRowset(Scroll.AVZ_JD_EXPR_TBL);
        For &J = 1 to &LEVEL2.ActiveRowCount
            &LEVEL0(1).&LEVEL1(&I).&LEVEL2(&J).AVZ_JD_EXPR_TBL.Active = "False";
        End-For;
    End-If;
End-For;

假设您的等级1记录 AVZ_JD_DTL_TBL 且您的等级2为 AVZ_JD_EXPR_TBL 。请仔细检查PeopleBooks的确切语法,但我认为这是正确的。