从交互式报告行设置表单值

RMA*_*ess 5 oracle-apex

我有两个表:T1和T2

表T1包含五列:CT11,CT12,CT13,CT14,CT15

表T2包含4列:CT21,CT22,CT23,CT24

我有一个包含两个区域的页面。区域1是使用表T1的表上的表单。区域2是表T2上的交互式报告(IR)。

区域2的SQL为:

从T2中选择apex_item.RADIOGROUP(p_idx => 1,p_value => CT21)“选择”,CT22,CT23,CT24;

当用户单击Interactive Report中一行的单选按钮时,我希望单元格CT22,CT23,CT24中的值填充表区域1中表格的CT13,CT14,CT15字段。如果用户单击另一行单选按钮,值应更新。

使用Google和Stackoverflow,我尝试了很多选择,但似乎找不到正确的方法。

Tom*_*Tom 2

希望您了解 f## 数组的工作原理以及它们在生成的 html 中的样子。为了解决这个问题,你需要 javascript,并且要了解你确实需要知道 html 是什么样的。没有什么比误解这一点更容易出错的了!更改 f## 数组或任何所需的列名称可能会导致代码无法正常工作,虽然我认为这并不太难,但理解它非常重要。如果您实施它,您将需要能够支持它,而不是依赖互联网上陌生人的帮助。话说回来。

创建动态动作。

  • 事件:刷新后
  • 选择类型:区域
  • 区域:您的 IR 区域
  • 健康)状况: -
  • 真实行动:

    • 执行 JavaScript 代码
    • 页面加载时触发:选中
    • 代码:

      $("input[name=f01]", this.triggeringElement).change(function(){
      //mind the capitalization in the headers attribute selector
      var lRow = $(this).closest("tr"),
          lct22 = lRow.find("td[headers=CT22]").text(),
          lct23 = lRow.find("td[headers=CT23]").text(),
          lct24 = lRow.find("td[headers=CT24]").text();
      console.log("22: " + lct22 + " - 23: " + lct23 + " - 24: " + lct24);
      $s("P3_CT13", lct22);
      $s("P3_CT14", lct23);
      $s("P3_CT15", lct24);
      })
      
      Run Code Online (Sandbox Code Playgroud)

"input[name=f01]"将选择单选按钮。您提供了单选按钮p_idx=>1,这将转换为数组 f01 的使用。

我也制作了一个小型演示应用程序:http://apex.oracle.com/pls/apex/f ?p=11964 。使用 apex_demo/demo 登录