2013-11-23 44 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));

代替