2013-11-23 40 views
1

我想实现一个使用JQueryMobile框架的ORACLE APEX应用程序的问答系统。基本上,一个问题文本和包含可能的答案的报告显示在一个页面上。点击复选框可以选择答案。点击提交按钮后,包含答案文本,answer_id和当前session_id的选定复选框将被插入到数据库中的表中。在Oracle APEX 4.2(w。JQuery Mobile)中循环复选框

在Oracle APEX 4.2中,我使用的是经典报告来实现这一点。 Thich实际上是一个不好的解决方案,因为报表中的复选框显示为简单的HTML复选框,而不是整洁的JQueryMobile复选框)。无论如何,这是我目前的解决方案:

是使用此代码创建的经典报告:

SELECT 
    APEX_ITEM.CHECKBOX(1,answer_id), 
    answer_id, 
    answer_text 
    FROM ANSWERS 
    WHERE question_ID = :P10_Question_ID; 

数据的插入是通过在提交过程中完成的“关于提交 - 计算和验证后”

这是在提交过程中的代码:

DECLARE 
var_session_id NUMBER := :P0_SESSION_ID; 
BEGIN 
    FOR i in 1..APEX_APPLICATION.G_F01.COUNT LOOP 
     INSERT INTO STUDENT_ANSWERS 
     (answer_id, answer_text, session_id) 
     SELECT a.answer_id, a.answer_text, var_session_id 
     FROM ANSWERS a 
     WHERE a.answer_id = APEX_APPLICATION.G_F01(i) 
    END LOOP; 
    COMMIT; 
    END; 

但这种方法是行不通的。相反,没有任何内容被插入到数据库中。

我不知道为什么这个过程没有插入到数据库中,这里可能是这行有问题 WHERE a.answer_id = APEX_APPLICATION.G_F01(i)

我甚至尝试一个简单的更新过程用于测试目的,但这并不工作之一:

BEGIN 
    FOR i in 1..APEX_APPLICATION.G_F01.COUNT LOOP 
     UPDATE STUDENT_ANSWERS 
     SET text = APEX_APPLICATION.G_F03(APEX_APPLICATION.G_F01(i)) 
     WHERE am_id = APEX_APPLICATION.G_F02(APEX_APPLICATION.G_F01(i)); 
    END LOOP; 
    COMMIT; 
END; 

可有人告诉我如何通过复选框环ORACLE APEX 4.2中,如何插入值ANSWER_ID,点击提交按钮后,ANSWER_TEXT和SESSION_ID到STUDENT_ANSWERS表中?如果您不知道如何使用报告而不是使用简单的复选框,这对我来说会更有帮助!

回答

0

您的复选框是否驻留在页面的主窗体标记中(您可以通过在运行时查看页面源代码来检查该窗口)? Fnn元素必须驻留在HTML表单中以提交给服务器。

你知道G_Fnn数组是否被填充?

0

使用APEX_ITEM.CHECKBOX2APEX_ITEM.CHECKBOX,并在where条件 WHERE a.answer_id = to_number(APEX_APPLICATION.G_F01(i));

代替