呼び出されたダイアログ ページを閉じた後、呼び出し元ページ (または送信ページ) のツリー領域を更新したいと考えています。
1 に答える
ツリー リージョンは、ネイティブの 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
- ツリー領域をリフレッシュするコード
- true action
あなたが持っているポップアップページで
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
データベースへの負担は、ページのリロードに使用するのと同じです。