1

2つのメインレポートがあります。各レポートには、Nonmain Classicレポートを含む対応するリージョンがあります(つまり、合計4つのレポート)。各メインレポートのリンクをクリックすると、対応する非メインレポートの詳細が表示されます。

現在、メインレポートをクリックするとページ全体がリロードされ、すべてのPL/SQLおよびSQLが4つのレポートすべてから再起動する必要があります。

非メインレポートのみが更新された場合、SQL呼び出しが削減されます。これを達成するには、AJAXが最善の策だと思います。

どうすればそのようなタスクを実行できますか?

ありがとうございました。

PS、4つのレポートはすべて、SQL文を返すPL/SQL関数によって決定されます。すべての見出しは、コロンで区切られた文字列を返すPL/SQL関数によっても決定されます。

4

2 に答える 2

1

以前の質問を念頭に置いて、従来のレポートは一部のページアイテムのセッション状態に依存しています。colunmnリンクでこれらのアイテムの値を設定しています。
ページの送信を切り取りたい場合は、アンカータグがデフォルトのアクションを実行せず、動的アクションに設定されるページアイテムの値を提供する方法が必要です。

これを列リンク属性に入れる必要があります。

onclick="return false;#" class="reportlink1"

次に、いくつかのデータを渡す必要があります。データタグを使用することをお勧めします

data-value1="#COL1#:"

クリックで起動し、jQueryセレクターを使用して動的アクションを作成します.reportlink1

ここで行う必要があるのは、ページアイテムに必要な値を提供することです。JavaScriptを実行するための真のアクションを追加します。

 var lValue1 = $(this.triggeringElement).data("value1");
 $("P1_ITEM1").val(lValue1)

アイテムの値を設定して、「更新」タイプの別の真のアクションを作成し、セカンダリレポートに影響を与えるように設定します。
最後のステップは、セカンダリレポートに「送信するページアイテム」を設定することです。これにより、レポートは設定されたページアイテムの値をセッションに送信し、リージョンが更新されたときにSQLが正しい値を返すようにします。

于 2013-01-31T08:52:45.487 に答える
1

何らかの理由で、トムのアプローチは私にはうまくいきませんでした。私はそれが私のページの特異性であるに違いないと思います。誰かがこの質問に出くわした場合は、最初にトムの方法を試してください。何らかの理由でうまくいかない場合は、動的アクションでAJAXを使用して次の適応を試してください。

非メインレポートが一部のページアイテムのセッション状態に依存しており、それらのアイテムがメインレポートの列リンクを介して設定されている場合は、ページの送信を防ぎ、データを使用して値を渡すために、これを列リンク属性に配置する必要がありますタグ:

onclick="return false;" class="reportlink1" data-value1="#COL01#" data-value2="#COL02#"

クリックで起動し、JQueryセレクターを使用して動的アクションを作成します.reportlink1

ページアイテムに必要な値VIAAJAXを提供します。同期JavaScriptを実行するための真のアクションを追加します。

 var v1 = $(this.triggeringElement).data("value1");
 var v2 = $(this.triggeringElement).data("value2");
 var get = new htmldb_Get(null, &APP_ID., 'APPLICATION_PROCESS=dummy', &APP_PAGE_ID.);
 get.add('PX_ITEM1' , v1)
 get.add('PX_ITEM2', v2);
 gReturn = get.get();
 get = null;

アイテムの値を設定したら、「更新」タイプの別の真のアクションを作成し、セカンダリレポートに影響を与えるように設定します。

トムのソリューションとは異なり、セカンダリレポートで送信するページアイテムを設定しないでください。

于 2013-02-01T22:00:21.510 に答える