0

我有 2 个以编程方式填充的视图对象,即该对象在查询语句区域中没有 SQL 查询。有 HeaderVO 和 LinesVO。我的任务是在高级表中显示高级表。而这个基于 HeaderVO 和 LinesVO 的高级表格。如果我使用 View Link 而不是 HeaderVO 表显示数据,但 LinesVO 表仅显示“未进行搜索”。这是合乎逻辑的,我明白为什么会这样。

在此处输入图像描述

但是我怎样才能连接这 2 个表(视图对象)?

4

2 回答 2

0

由于 VO 以编程方式填充,您可以尝试通过在这些 VO 之间创建 View Link 也以编程方式进行。您可以使用以下方法进行相同的操作:

假设 Master VO 为 deptVO,Detail VO 为 empVO。

  // Build an attribute array, consisting of deptVO.DeptNum for Master VO
  AttributeDef[] deptAttrs = new AttributeDef[1];
  deptAttrs[0] = deptVO.findAttributeDef("DeptNum");

  // Build an attribute array, consisting of empVO.DeptNum for Detail VO
  AttributeDef[] empAttrs = new Attributedef[1];
  empAttrs[0] = empVO.findAttributeDef("DeptNum");

  ViewLink vl = myAM.createViewLinkBetweenViewObjects("yourVLName",
  "VLAccessor", //accessor name
  deptVO, //master VO
  deptAttrs, //master VO attribute
  empVO, //detail VO
  empAttrs, //detail VO attribute
  null); //association clause
于 2018-08-29T07:48:20.353 回答
0

为了在 OAF advancedTable 组件中拥有 Master-Detail 关系,必须正确映射 detail VO 子属性。由于您是编程定义的 Master VO 和 Child VO,请确保此步骤已完成。您是以声明方式还是以编程方式创建高级表?

createViewLinkBetweenViewObjects API

ViewObject voDept = am.createViewObject("MyDeptVO", "package1.DeptView");
    ViewObject voEmp = am.createViewObject("MyEmpVO", "package1.EmpView");

    AttributeDef[] deptLinkAttrs = new AttributeDef[] { voDept.findAttributeDef("Deptno") };
    AttributeDef[] empLinkAttrs = new AttributeDef[] { voEmp.findAttributeDef("Deptno") };

    ViewLink vl = am.createViewLinkFromEntityAssocName("MyDeptEmpLink",
                        "Employees",
                        voDept, deptLinkAttrs,
                        voEmp, empLinkAttrs,
                        null);
于 2018-08-29T08:43:44.517 回答