1

私はOracle Apexでいくつかのコードを書いていますが、私は開発のバックグラウンドを持っていないので、悪いコードを許してください。フォームを動的に生成しています。ユーザーが特定のフォーム要素の値を変更したときに非表示のページ項目を設定したいと考えています。私が使用しているコードは次のとおりです。

    select APEX_ITEM.HIDDEN(2,base_data_seq_nbr)||APEX_ITEM.HIDDEN(6,case when substr(description,0,1)= chr(49838) then substr(description,-(length(description)-1)) else description end)||APEX_ITEM.HIDDEN(7,case when substr(description,0,1)= chr(49838) then 1 else 0 end)||APEX_ITEM.HIDDEN(9,
                 data_select(replace(replace(trim(substr(field_name,-(length(field_name)-instr(field_name,',',1)))),'BSBR',''),'C','L'), substr(field_name,0,instr(field_name,',',1)-1), :P721_XCASE,:P721_XRETSTAT,:P721_XID,:P721_XCUSNUM,:P721_DB_ID))||case when substr(description,0,1)= chr(49838)
         then '<img src="/i/themes/theme_2/images/required.gif" alt="Value Required" alt="Value Required" />'
         else null
       end as req_ind,
   case when substr(description,0,1)= chr(49838)
         then substr(description,-(length(description)-1))
         else description
       end as description,
   APEX_ITEM.DATE_POPUP(1,rownum,
                 to_date(data_select(replace(replace(trim(substr(field_name,-(length(field_name)-instr(field_name,',',1)))),'BSBR',''),'C','L'), substr(field_name,0,instr(field_name,',',1)-1), :P721_XCASE,:P721_XRETSTAT,:P721_XID,:P721_XCUSNUM,:P721_DB_ID),'MM/DD/YYYY'),'MM/DD/YYYY',10,10,'onkeyup="javascript:FormatDate(this);"' ||case when instr(substr(field_name,1,4),'DOB,',1)>0 then ' onchange="javascript:$s(''P721_DOB_RBD'',this);"' end,'datepicker_'||rownum)
        end
   end as field_format
from bcvsown.bcvs_base_data
    inner join v_lookup v
    on v.value_seq = stmt_type 
left join (select * from apex_collections where collection_name = 'ERR_COLLECTION') ac
    on base_data_seq_nbr=ac.n001
where caseno = :P721_XCASE
and v.value_cd = case when :P721_XDE_SEQ > 1 then decode(:P721_XIS_BSRS,'true','BSRS','BET') else v.value_cd end
and db_id = :P721_DB_ID
and v.type_cd = 'STMT_TYPE' 
order by base_data_seq_nbr

ページはエラーなしで期待どおりにレンダリングされ、ページ ソースには、 (onchange="javascript:$s(''P721_DOB_RBD'',this);")目的の要素にのみ適用された JavaScript 設定が表示されます。しかし、要素を変更すると、非表示のページ項目の値が設定されないようです(P721_DOB_RBD)

4

3 に答える 3

3

そのマークアップは非常に恐ろしいものです。時間をかけてコードを適切にフォーマットし、インデントしてください!

あなたの問題に関しては、これは $s の Oracle apex javascript apis リファレンスです

$s(pNd, pValue, pDisplayValue, pSuppressChangeEvent)

DOM ノードまたは文字列 ID (pNd) を指定すると、この関数は項目タイプを考慮して Application Express 項目値を設定します。pDisplayValue はオプションです。属性「入力フィールド」が「入力不可、表示値を表示し、戻り値を格納」であるタイプ「ポップアップLOV」のページ・アイテムに使用される場合、「入力フィールド」の設定に使用されます。pValue の値は、非表示の戻りフィールドに格納されます。pSuppressChangeEvent パラメータはオプションです。FALSE を渡すか、このパラメーター値を渡さないと、設定されている項目に対して変更イベントが発生します。TRUE を渡して、設定されている項目に対して変更イベントが発生しないようにします。

パラメーター

pNd (DOM Node | string ID)
pValue  (String | Array)
pDisplayValue(String)
pSuppressChangeEvent(Boolean)

引き継ぎthisはうまくいきません。値を渡したい場合は、オブジェクトを渡します。APEX_ITEM.DATE_POPUPアイテムを生成する を作成しているため、イベントが発生した時点でアイテムのinputが必要になります。( ref )を使用してそれを行うことができますvaluechange$v

$v(pNd)

DOM ノードまたは文字列 ID (pNd) を指定すると、この関数は Application Express 項目の値を、ポストされるのと同じ形式で返します。

パラメーター

pNd (DOM Node | string ID)

だから、これを試してください:

(onchange="javascript:$s(''P721_DOB_RBD'',$v(this));")
于 2012-10-24T16:43:45.760 に答える
0

数年後 - コードをフォーマットするには、sqldeveloper を使用してコードを sqldeveloper sql ワークシートにコピーし、右クリックしてフォーマットを選択します。

 SELECT APEX_ITEM.HIDDEN(2,base_data_seq_nbr)
  ||APEX_ITEM.HIDDEN(6,
  CASE
    WHEN SUBSTR(description,0,1)= chr(49838)
    THEN SUBSTR(description,-(LENGTH(description)-1))
    ELSE description
  END)
  ||APEX_ITEM.HIDDEN(7,
  CASE
    WHEN SUBSTR(description,0,1)= chr(49838)
    THEN 1
    ELSE 0
  END)
  ||APEX_ITEM.HIDDEN(9, data_select(REPLACE(REPLACE(trim(SUBSTR(field_name,-(LENGTH(field_name)-instr(field_name,',',1)))),'BSBR',''),'C','L'), SUBSTR(field_name,0,instr(field_name,',',1)-1), :P721_XCASE,:P721_XRETSTAT,:P721_XID,:P721_XCUSNUM,:P721_DB_ID))
  ||
  CASE
    WHEN SUBSTR(description,0,1)= chr(49838)
    THEN '<img src="/i/themes/theme_2/images/required.gif" alt="Value Required" alt="Value Required" />'
    ELSE NULL
  END AS req_ind,
  CASE
    WHEN SUBSTR(description,0,1)= chr(49838)
    THEN SUBSTR(description,-(LENGTH(description)-1))
    ELSE description
  END AS description,
  APEX_ITEM.DATE_POPUP(1,rownum, to_date(data_select(REPLACE(REPLACE(trim(SUBSTR(field_name,-(LENGTH(field_name)-instr(field_name,',',1)))),'BSBR',''),'C','L'), SUBSTR(field_name,0,instr(field_name,',',1)-1), :P721_XCASE,:P721_XRETSTAT,:P721_XID,:P721_XCUSNUM,:P721_DB_ID),'MM/DD/YYYY'),'MM/DD/YYYY',10,10,'onkeyup="javascript:FormatDate(this);"'
  ||
  CASE
    WHEN instr(SUBSTR(field_name,1,4),'DOB,',1)>0
    THEN ' onchange="javascript:$s(''P721_DOB_RBD'',this);"'
  END,'datepicker_'
  ||rownum)
END
END AS field_format
FROM bcvsown.bcvs_base_data
INNER JOIN v_lookup v
ON v.value_seq = stmt_type
LEFT JOIN
  (SELECT * FROM apex_collections WHERE collection_name = 'ERR_COLLECTION'
  ) ac
ON base_data_seq_nbr=ac.n001
WHERE caseno        = :P721_XCASE
AND v.value_cd      =
  CASE
    WHEN :P721_XDE_SEQ > 1
    THEN DECODE(:P721_XIS_BSRS,'true','BSRS','BET')
    ELSE v.value_cd
  END
AND db_id     = :P721_DB_ID
AND v.type_cd = 'STMT_TYPE'
ORDER BY base_data_seq_nbr
于 2014-09-13T20:09:18.820 に答える