Oracle Apex 动态复制表格形式条目

Posted

技术标签:

【中文标题】Oracle Apex 动态复制表格形式条目【英文标题】:Oracle Apex dynamically copy tabular form entry 【发布时间】:2020-09-09 08:18:26 【问题描述】:

我使用的是 Oracle Apex 19.1 我有如下表格形式:

当用户单击下面的按钮时,我想将第一天(“Lun. 07 Sept.”)的条目复制到一周的其他日子。 到目前为止,我已经创建了一个关于点击的动态操作,它执行以下 PL/SQL:

BEGIN
    FOR i IN 1..htmldb_application.g_f01.count LOOP
        htmldb_application.g_f02(i) := htmldb_application.g_f01(i);
        htmldb_application.g_f03(i) := htmldb_application.g_f01(i);
        htmldb_application.g_f04(i) := htmldb_application.g_f01(i);
        htmldb_application.g_f05(i) := htmldb_application.g_f01(i);
    END LOOP;

    COMMIT;
END;

然而,当我点击按钮时,什么也没有发生。知道我在做什么错吗?我应该改用 javascript 吗? 我验证了,每个选择列表的html id确实是f01_0001f01_0002等(以第一列为例)。

【问题讨论】:

请注意,现在有很多版本都将表格形式标记为旧版,并且从 APEX 20 开始正式弃用。 Oracle 建议切换到交互式网格。 @ThomasTschernich 我知道,但我目前正在开发一个在 apex 4.2 上开发的应用程序,我刚刚将它升级到 19.1,但我暂时不会改变事情的完成方式。只有新页面/报告将是交互式的。感谢您的建议 【参考方案1】:

我应该改用 JavaScript 吗?

这是正确的。 htmldb_application.g_f02(i) 项仅在提交页面时可用。并且是为了更新数据库而不是更新 DOM 元素。

这可能会有所帮助

var f01arr = document.getElementsByName("f01");
var f02arr = document.getElementsByName("f02");
var f03arr = document.getElementsByName("f03");
var f04arr = document.getElementsByName("f04");
var f05arr = document.getElementsByName("f05");
for (i = 0; i < f01arr.length; i++) 

    f02arr[i].value = f01arr[i].value;
    f03arr[i].value = f01arr[i].value;
    f04arr[i].value = f01arr[i].value;
    f05arr[i].value = f01arr[i].value;


【讨论】:

我不知道 pl/sql 仅在提交时执行。我明白为什么我需要使用 javascript。这就像一个魅力,谢谢。 我们可以在动态操作中执行 pl/sql 代码,但是 htmldb_application.g_f02(i) 在页面提交之前这些代码不可用。编辑答案

以上是关于Oracle Apex 动态复制表格形式条目的主要内容,如果未能解决你的问题,请参考以下文章

Oracle APEX 表格形式选择列表禁用

APEX 以表格形式创建动态值列表

以 oracle apex 形式创建动态 where 子句

通过在 Oracle Apex 中创建视图将 cols 转换为 oracle 中的行

Oracle Apex - 如何在动态列表中显示图像

Oracle Apex 更新表的特定行