2

呼び出されたダイアログ ページを閉じた後、呼び出し元ページ (または送信ページ) のツリー領域を更新したいと考えています。

4

1 に答える 1

2

ツリー リージョンは、ネイティブの APEX 更新イベントをサポートしていません。この質問でいくつかの説明を読むことができます Oracle APEX 5.0ツリーを動的にリロードする方法

しかし!

あなたは厄介な方法でそれを行うことができます。厄介なことに、ツリー領域を使用して現在のページへの AJAX 呼び出しを介してページをリロードします。

だから、私はあなたが2ページを持っていると仮定します

  • ツリー領域のあるメイン ページ (page_id 10)
  • モーダルページ (page_id 11)

あなたが持っているメインページで

  • 静的 ID を持つツリー領域test
  • OPENPOPUPポップアップを開くボタン
  • イベントにバインドされた動的アクションDialog Closed(選択タイプbutton、ボタンOPENPOPUP)
    • true action Execute JavaScript Code- ツリー領域をリフレッシュするコード

あなたが持っているポップアップページで

  • CLOSEPOPUP真のアクションを起動する動的アクションが定義されたボタンClose Dialog

メインページとモーダルページをバインドする基本です。必要なのはExecute JavaScript Code、ポップアップがボタンで閉じられるたびにツリー領域の最新バージョンをロードすることですCLOSEPOPUP

リフレッシュサポートの欠如を回避することは可能ですか? Execute JavaScript Codeそこで、メインページからツリー領域のみをロードするように独自に作成しました。

var 
  treeRegionStaticId = '#test',
  currentTree = $(treeRegionStaticId);
  parent = currentTree.parent();

$.ajax({
  url: apex.server.url ({}, $v('pFlowStepId')),
  dataType: 'html',
  method : 'GET',
  success: function( data ){
    var
      temp = $('<html />'),
      newTree,
      id;

    temp.html( data );
    //find region with id 'test'
    newTree = temp.find( treeRegionStaticId );
    //get id that is needed to call APEX tree constructor
    id = newTree.find('[aria-label="Tree"]').attr('id');
    //remove old tree region
    currentTree.remove();
    //append new tree region
    newTree.appendTo( parent );
    //call apex tree constructor
    eval( 'apex.widget.tree.init( \''+id+'\', {}, gT'+(id.substr(1, id.length))+'Data,"S","",true,false,false,"a-Icon")' )
  }
})

ローカルの APEX 5 でテストしましたがCLOSEPOPUP、モーダル ページでボタンを使用するたびに、モーダル ページを閉じた後にツリー領域が更新されます。

上記のコードは、メイン ページのExecute JavaScript codeイベントにバインドされた動的アクションとして使用する必要があります。Dialog Closed

ところで。apex.submitデータベースへの負担は、ページのリロードに使用するのと同じです。

于 2016-08-11T16:35:18.487 に答える