0

1 つのボタンのオンクリックで 2 つの部分的な更新と 1 つのドキュメントの保存を行いたいと思います。どうすればこれを行うことができますか? 私がこれまでに試したこと:

  1. CCJS で、サーバーへの送信なし

    XSP.partialRefreshGet("#{id:PanelSubitem}", {
        onComplete: function() {
             XSP.partialRefreshGet("#{id:PanelSubsubitem}", {
                 onComplete: function() { 
                '#{javascript:document1.save()}';
                }
            });
        }
    });
    

    結果: 2 つのリフレッシュは機能しますが、ドキュメントは保存されません (ccjs でバックエンドにアクセスできないため、正常です。

  2. 部分的な更新または完全な更新を使用して、同じコードを SSJS に配置します。

    結果: ボタンを最初にクリックすると、最初のパネルが更新されてから停止します。2 回目の更新により、2 番目のパネルが更新されて停止します。ボタンを 3 回クリックすると、ドキュメントが保存されます。(一度に 1 つの更新しか実行できないため、コードの部分的または完全な更新がサーバー オプションの部分的または完全な更新と競合するため、これも正常です)

SSJS でそれを行うことができず、CSJS でそれを行うことができない場合、どうすればそれを行うことができますか?

4

3 に答える 3

1

あなたが試すことができるのは、ドキュメントを保存し、CSJS を介した 2 回目の部分更新の完了後に部分更新自体を行う [保存] ボタンを作成することです。したがって、スニペットは次のようになります。

XSP.partialRefreshGet("#{id:PanelSubitem}", {
   onComplete: function() {
      XSP.partialRefreshGet("#{id:PanelSubsubitem}", {
         onComplete: function() { 
            document.getElementById("#{id:btnSave}").click();
         }
      });
   }
});
<xp:button value="Save" id="btnSave">
    <xp:eventHandler event="onclick" submit="true" refreshMode="partial" refreshId="btnSave">
        <xp:this.action><![CDATA[#{javascript:document1.save()}]]></xp:this.action>
    </xp:eventHandler>
</xp:button>

CSS を使用して [保存] ボタンを非表示にすることができます。

于 2012-07-05T17:17:14.517 に答える
1
  <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
            <xp:this.action>
                <xp:actionGroup>
                    <xp:executeScript>
                        <xp:this.script><![CDATA[#{javascript:document.save();}]]></xp:this.script>
                    </xp:executeScript>
                </xp:actionGroup>
            </xp:this.action>
        <xp:this.onComplete><![CDATA[(function(){
            XSP.partialRefreshGet("#{id:PanelSubItem}");
            XSP.allowSubmit();
            XSP.partialRefreshGet("#{id:PanelSubSubItem}");
          })();]]>
       </xp:this.onComplete>
    </xp:eventHandler>
于 2016-06-23T15:56:55.430 に答える
0

考えられる方法の 1 つは、CSJS に続いて SSJS を実行できるという事実を利用することです。SSJS は CSJS のみを実行し、true を返します。

したがって、ボタンの場合、既存の二重部分更新コードをクライアント側コードとしてボタンの onClick イベントに追加し (おそらくreturn trueステートメントも追加する必要があります)、ドキュメント保存コードを SSJS として同じイベントに追加します。 onClick イベント。

于 2012-07-05T08:12:40.197 に答える