如何在 Oracle Apex 5.1 中动态添加一个或多个文本框到一个区域?
How do I dynamically add one or more text boxes to a region in Oracle Apex 5.1?
我正在使用 Oracle Apex 5.1 创建示例应用程序。我正在尝试根据输入到字段中的数字创建新的文本框。目前为止,这部剧的演员有:
- P11_TESTBOX: 包含必要新框数量的文本框
- TEST:按下时会触发必要的动态操作的按钮
- 程序 TEST_THIS:PL/SQL 程序,当被按钮触发时,将 运行 并创建必要的框
目前所写的程序(只是想测试看看我是否可以在完全实施之前让它工作):
CREATE OR REPLACE PROCEDURE TEST_THIS (
HOW_MANY IN NUMBER)
IS
BEGIN
FOR I IN 1..HOW_MANY LOOP
HTP.P('<input class="dynamicBoxes" id="P11_BOX_' || I || '" type="text" value="" />');
HTP.P('<br/>');
END LOOP;
END;
像往常一样,我在 TEST 上设置了一个动态操作:事件设置为 'Click',选择类型为 'Button',按钮为 'TEST',事件范围为 'Static'. True 操作是 'Execute PL/SQL Code',这是对过程 HOW_MANY
的简单调用,将 :P11_TESTBOX 作为数字传递。我一直收到错误
Ajax call returned server error ORA-06502: PL/SQL: numeric or value
error for Execute PL/SQL Code
以为我快疯了(老实说,此时与事实相去不远),我添加了一个 'Execute JavaScript Code' 函数:
alert(document.getElementById('P11_TESTBOX').value);
不出所料,输入框的数字被返回了。可悲的是,错误仍然出现。
为了确保我尝试了一切,我更改了PL/SQL过程的语法:
CREATE OR REPLACE PROCEDURE TEST_THIS (
HOW_MANY IN NUMBER)
IS
BEGIN
FOR I IN 1..HOW_MANY LOOP
HTP.P(
apex_item.text(
p_idx => 'P11_NEWBOX_0' || I,
p_Value => ''
)
);
END LOOP;
END;
结果:警报仍然给我号码;错误仍然存在。
尝试两个版本的想法来自 this website。
只是为了先发制人,一旦我能够解决这个问题,我将需要获取输入到创建的文本框中的任何值并将它们插入到数据库中。我希望这就像使用创建的任何 ID 一样简单,但在这个问题之后我并不乐观。任何帮助将不胜感激。
您不需要编写 PL/SQL 过程。只需隐藏页面加载上的框,当触发动态操作显示它们的按钮时?所以你转到服务器端操作和 Item = Value 并在 DA
中设置它
我正在使用 Oracle Apex 5.1 创建示例应用程序。我正在尝试根据输入到字段中的数字创建新的文本框。目前为止,这部剧的演员有:
- P11_TESTBOX: 包含必要新框数量的文本框
- TEST:按下时会触发必要的动态操作的按钮
- 程序 TEST_THIS:PL/SQL 程序,当被按钮触发时,将 运行 并创建必要的框
目前所写的程序(只是想测试看看我是否可以在完全实施之前让它工作):
CREATE OR REPLACE PROCEDURE TEST_THIS (
HOW_MANY IN NUMBER)
IS
BEGIN
FOR I IN 1..HOW_MANY LOOP
HTP.P('<input class="dynamicBoxes" id="P11_BOX_' || I || '" type="text" value="" />');
HTP.P('<br/>');
END LOOP;
END;
像往常一样,我在 TEST 上设置了一个动态操作:事件设置为 'Click',选择类型为 'Button',按钮为 'TEST',事件范围为 'Static'. True 操作是 'Execute PL/SQL Code',这是对过程 HOW_MANY
的简单调用,将 :P11_TESTBOX 作为数字传递。我一直收到错误
Ajax call returned server error ORA-06502: PL/SQL: numeric or value error for Execute PL/SQL Code
以为我快疯了(老实说,此时与事实相去不远),我添加了一个 'Execute JavaScript Code' 函数:
alert(document.getElementById('P11_TESTBOX').value);
不出所料,输入框的数字被返回了。可悲的是,错误仍然出现。
为了确保我尝试了一切,我更改了PL/SQL过程的语法:
CREATE OR REPLACE PROCEDURE TEST_THIS (
HOW_MANY IN NUMBER)
IS
BEGIN
FOR I IN 1..HOW_MANY LOOP
HTP.P(
apex_item.text(
p_idx => 'P11_NEWBOX_0' || I,
p_Value => ''
)
);
END LOOP;
END;
结果:警报仍然给我号码;错误仍然存在。
尝试两个版本的想法来自 this website。
只是为了先发制人,一旦我能够解决这个问题,我将需要获取输入到创建的文本框中的任何值并将它们插入到数据库中。我希望这就像使用创建的任何 ID 一样简单,但在这个问题之后我并不乐观。任何帮助将不胜感激。
您不需要编写 PL/SQL 过程。只需隐藏页面加载上的框,当触发动态操作显示它们的按钮时?所以你转到服务器端操作和 Item = Value 并在 DA
中设置它