1

Oracle ApExコレクションに問題があり、思った結果が表示されない理由がわかりません。

まず、OracleApExv3.0を使用しています

Joel Kallmanのチェックボックスを保持することに関して、この例で説明されているように、基本的に次の設定があります。

http://joelkallman.blogspot.com.au/2008_03_01_archive.html

私のシナリオを説明すると、Joelの例を使用して、任意の数のチェックボックスを選択したレコードのリストをユーザーに再送信します。選択したレコードは、apexコレクション「EMP_COLLECTION」に格納されます。

これですべてが「EMP_COLLECTION」内に正しく格納されているように見えますが、コレクション内から、jQueryUIダイアログであるPL/ SQL領域内からこれらの格納された値にアクセスしようとすると、値を取得できないようです。

現在、このページは送信されていません。したがって、ユーザーがバックエンドに格納されているいくつかのチェックボックスを「EMP_COLLECTION」に選択すると、ユーザーは、基本的に.dialog('open')呼び出しを実行するjavascript関数を呼び出すボタンを押します。これはすべて正常に機能します。

次に、これによりPL / SQL領域ブロックが呼び出されます。ここでRegion Header、次のように定義しました。

<div id="dialog-1up-br" title="Requests - No Email Address"><img src="#WORKSPACE_IMAGES#info.gif" height="30" width="30"/>
  Please Note: You are receiving this notification as a valid email address is not available for: <br/><br/>

このPL/SQLRegionブロックのリージョンソースは次のとおりです。

BEGIN
  htp.p('<ul>');
  FOR i_rec IN ( SELECT a.c001 staff_id
                 FROM   apex_collections a
                 WHERE  a.collection_name = 'EMP_COLLECTION') LOOP
    htp.p('<li>'||i_rec.staff_id ||'</li>');
  END LOOP;
  htp.p('</ul>');
END;

上記の情報に基づいて、このPL /SQLリージョンに基づいてjQueryUIダイアログボックスが表示されると、リージョンヘッダー情報は正しく表示されますが、リージョンソースのPL / SQLに基づいて、その下には何も表示されません。

セッション変数内にコレクションが表示され、正しい情報が含まれているため、実際にページを送信していないためですか?

4

4 に答える 4

2

PL / SQL領域が現在のページの一部である場合、ページがロードされたときにその内容がレンダリングされました。Javascriptを使用して「表示」すると、更新されませんが、元の状態が表示されます。

PL / SQL領域の代わりにレポート領域を使用した場合は、Javascriptから動的に更新できます。テーブルの代わりにリストを作成する特別なレポートテンプレートが必要です。

APEX 3.0を使用しているため、レポート領域の更新はそれほど簡単ではない場合があります(はっきりとは覚えていません)。その場合、オンデマンドプロセスでリージョンのHTML全体を作成して返すことができます。その後、Javascriptでオンデマンドプロセスを呼び出し、プロセスによって返されたHTMLを(HTML)リージョンに入力できます。

于 2012-09-06T11:51:27.693 に答える
0

トニーとトムの支援にもう一度感謝します。

提案されたように、私は基本的にここで概説されていることを実行しました:

APEX 3.0を使用しているため、レポート領域の更新はそれほど簡単ではない場合があります(はっきりとは覚えていません)。その場合、オンデマンドプロセスでリージョンのHTML全体を作成して返すことができます。その後、Javascriptでオンデマンドプロセスを呼び出し、プロセスによって返されたHTMLを(HTML)リージョンに入力できます。

基本的に、オンデマンドプロセスを使用して、必要な結果セットを取得しました。これは、ページの[送信]ボタンからトリガーされたJavaScript関数から呼び出しました。リージョンヘッダーとリージョンフッターの両方を設定したHTMLリージョンを使用$('#div-id').html(gReturn)して、オンデマンドプロセスからを使用して、結果セットをダイアログに返すだけです。

すべて正常に動作しました。

于 2012-09-06T16:00:25.270 に答える
0

私もチップインします。:-)
正直なところ、うまくいかなかったのは、iframeがレンダリングされたポイントだけです。それについてあなたができることがいくつかあります:

  • レンダリング時にiframeを作成しますが、ソースは設定しないでください。ボタンがクリックされたら、ソースを設定してから、.dialog
  • レンダリング時にiframeを作成しないでください。ボタンが呼び出されたら、iframeを作成し$("div#container").html("<iframe src='...'></iframe>")、続いて.dialog
  • iframeソースを単にリロードするオプションもあります 。jQueryを使用してiframeをリロードするを参照してください。

それもあまり面倒なことなくそれを解決するはずです。

于 2012-09-06T16:40:28.330 に答える
0

また、作成中およびクエリ中は、コレクション名が大文字であることを確認してください(同様の問題に直面し、解決されました)

于 2021-09-05T18:12:35.447 に答える