-1

我有 Oracle APEX 4。我手动创建了一个表格表单(使用apex_item包)。它包含三个字段。

  • apex_application.g_f03:LOV(select name display, product_id return from products
  • apex_application.g_f04:文本字段“价格”
  • apex_application.g_f05:文本字段“数量”。

选择产品名称 (...f03) 后,我想查看 f04 中产品的价格。SQL 语句是这样的:

select price from products where product_id = {..from f03}.

如何使用动态操作或 javascript 函数来做到这一点?

4

1 回答 1

1

好的,我会给你一个提示如何实现你的场景。

你需要做的事情是让它工作:

  • custom tabular因为 - 你已经拥有了
  • on demand process从 db 获取产品价格
  • dynamic action听值是否f03改变

按需流程

getPrice创建使用以下代码命名的按需流程

declare
  v_price number;
begin
  select 
    price 
  into 
    v_price 
  from 
    products
  where 
    product_id = apex_application.g_x01;

  htp.p( v_price );

exception
  when others then
    htp.p(SQLERRM);
end;

动态动作

您必须在 jQuery 选择器上监听事件更改:input[name=f03]。用真实的动作创造动态的动作Execute JavaScript Code

在真正的行动中,您必须对on demand process. 示例代码(工作)如下:

var 
  xhr2,
  self = $(this.triggeringElement),
  productId = self.val(),
  row = self.closest('tr');

xhr = $.ajax({
  url:'wwv_flow.show',
  type:'post',
  dataType: 'text',
  traditional: true,
  data: {
    p_request: "APPLICATION_PROCESS=getPrice",
    p_flow_id: $v('pFlowId'),
    p_flow_step_id: $v('pFlowStepId'),
    p_instance: $v('pInstance'),
    //p_arg_names: [ item_id ],
    //p_arg_values: [ itemValue ],
    x01: productId
  },

  success: function( resultData, textStatus, ajaxObj ){ 
    //do stuff after fetching product price
    row.find( ':input[name=f04]' ).val( resultData )

  },

  error: function(jqXHR, textStatus, errorThrown){ 
    alert('Error occured while retrieving AJAX data: '+textStatus+"\n"+errorThrown);
  }
}); 

把这些东西放在一起,你就会得到你的问题的答案。

附言。如果答案是您的问题的答案,请不要忘记将答案标记为有帮助。

于 2016-08-13T15:28:17.890 回答