2013-01-21 44 views
1

在我的Oracle Apex應用程序中有一個帶有description, previous_value, unit_price字段的表格形式。填充表格字段值與其他字段的更改

我需要在description字段填寫previous_value字段的數據字段值。我有一個查詢從數據庫中獲取previous_value字段的值。我需要將onChange事件添加到description字段。隨着description字段中的更改,應使用我的查詢填充previous_value字段的值。

我怎麼能做到這一點?

回答

2

您可以通過多種方式將更改事件綁定到該字段。通過td標題目標, 或編輯列,並在「元素屬性」字段中添加一個類(例如「fireAjax」)。 然後,您可以使用javascript代碼綁定到事件,或者通過動態操作來完成此操作。

你可以在任一兩種形式Ajax調用:通過htmldb_Get或jquery.post:

$('td[headers="ENAME"] input').change(function(){ 
    var ajaxRequest = new htmldb_Get(null , $v('pFlowId') , 'APPLICATION_PROCESS=get_job' , $v('pFlowStepId')); 
    ajaxRequest.addParam('x01', $(this).val()); 
    ajaxResult = ajaxRequest.get(); 
    $(this).closest("tr").find("td[headers='JOB'] input").val(ajaxResult); 
}); 

OR

$('td[headers="ENAME"] input').change(function(){ 
var that = this; 
$.post('wwv_flow.show', 
     {"p_request"  : "APPLICATION_PROCESS=get_job", 
     "p_flow_id"  : $v('pFlowId'), 
     "p_flow_step_id" : $v('pFlowStepId'), 
     "p_instance"  : $v('pInstance'), 
     "x01"   : $(this).val() 
     }, 
     function(data){ 
      var eJob = $(that).closest("tr").find("td[headers='JOB'] input"); 
      eJob.val(data); 
     }, 
     "text" 
    ); 
}); 

有了這個應用程序過程中,隨着頁面上定義執行點 「Ajax回調」:
名稱:get_job

DECLARE 
    l_job emp.job%TYPE; 
BEGIN 
    SELECT job 
    INTO l_job 
    FROM emp 
    WHERE ename = apex_application.g_x01; 

    htp.p(l_job); 
EXCEPTION WHEN no_data_found THEN 
    htp.p(''); 
END; 

請記住,在這個過程中處理錯誤和回報取決於你!確保你能發現常見的錯誤,如no_data_found和/或too_many_rows。如果它們發生並且沒有被捕獲,那麼機會很大,你會遇到javascript錯誤,因爲你的javascript回調代碼不能處理錯誤(在apex中它將是一個包含錯誤信息的完整頁面html)。
此外,你可以看到我使用x01變量,它是apex中10個全局臨時變量之一。通過這種方式,不需要使用頁面項並將值提交到會話狀態。

如果你想把這段代碼放在動態行爲中,你可以。選擇「更改」作爲事件和jQuery選擇器,如果你去做一個動態的動作,並且真正的動作選擇執行javascript代碼。然後你可以把功能代碼放在那裏。除了$(this)將需要$(this.triggeringElement)

+0

我的表格形式的'description'列是'autocomplete'。它也使用ajax調用。當我從自動完成列表中選擇描述時,這不起作用。如果我沒有從自動完成列表中選擇寫完整的描述,這是工作。我怎麼能解決這個問題? – Bishan

+0

你有什麼樣的自動完成功能?一個jQuery嗎?如果是的話,你有什麼事情可以取消自動完成的事件嗎?更改事件應該簡單地觸發一個自動完成項目,我自己嘗試了自動完成的更改事件和綁定到該項目的更改事件。 – Tom

+0

jQuery one with Ajax回撥 – Bishan