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 中,部分刷新或完全刷新

    结果:首先单击按钮刷新第一个面板,然后停止。第二次刷新将更新第二个面板并停止。第三次单击按钮将保存文档。(这也是正常的,因为代码的部分或全部刷新与服务器选项的部分或全部刷新冲突,因为您一次只能进行 1 次刷新)

因此,如果我在 SSJS 中无法做到,而在 CSJS 中也无法做到,我该怎么办?

4

3 回答 3

1

您可以尝试创建一个保存按钮,该按钮保存文档并在通过 CSJS 完成第二次部分刷新后自行部分刷新。所以你的片段会是这样的:

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

一种可能的方法是利用您可以在运行 CSJS 后运行 SSJS 的事实。SSJS 只会运行 CSJS 返回 true。

因此,对于您的按钮,您将现有的双重部分刷新代码作为客户端代码添加到按钮的 onClick 事件中(也许您还需要添加一条return true语句),然后将您的文档保存代码作为 SSJS 添加到相同的onClick 事件。

于 2012-07-05T08:12:40.197 回答