我有一个绑定到面板的文档数据源(没有父ID的创建文档)。在面板中我有2个其他面板。在完成面板1中的字段后,我单击一个链接以显示第二个面板,并在其上有一个保存按钮。保存后,文档会正确显示在数据库中。
保存按钮执行dds保存,然后清除所有字段,并在外部面板上进行部分更新,并在该面板上执行部分执行,因为我在主面板外部的XPage上有其他dds。
如果我现在创建另一个文档,则先前的文档会更新,而不是创建新文档。我已经为dds和其他选项尝试了不同的范围。不知道下一步该尝试什么。
任何人都知道问题是什么?
答案 0 :(得分:9)
以下是如何使用部分刷新添加新数据源的示例:
<xp:panel id="myPanel">
<xp:this.data>
<xp:dominoDocument var="document1"></xp:dominoDocument>
</xp:this.data>
<xp:br></xp:br>
<xp:inputText id="inputText1" value="#{document1.Test}"></xp:inputText>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:button value="Save" id="buttonSave">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="myPanel">
<xp:this.action>
<xp:actionGroup>
<xp:saveDocument var="document1"></xp:saveDocument>
<xp:executeScript>
<xp:this.script>
<![CDATA[#{javascript:
var panel = getComponent("myPanel");
var ds = new com.ibm.xsp.model.domino.DominoDocumentData();
ds.setComponent(panel);
ds.setVar("document1");
panel.getData().clear();
panel.addData(ds);
}]]>
</xp:this.script>
</xp:executeScript>
</xp:actionGroup>
</xp:this.action>
</xp:eventHandler>
</xp:button>
</xp:panel>
希望这有帮助
斯文
修改强>
添加了 clear()以从面板中删除所有先前定义的数据源。
答案 1 :(得分:0)
这是默认行为。如果您不想重新加载整个页面,则单击“保存”按钮时,一个选项是删除数据源并在SSJS事件中创建新文档。
答案 2 :(得分:0)
我成功地使用了Sven的答案,但是,我必须在服务器端添加额外的一行JavaScript
<xp:executeScript>
<xp:this.script>
<![CDATA[#{javascript:
var panel = getComponent("myPanel");
var ds = new com.ibm.xsp.model.domino.DominoDocumentData();
ds.setComponent(panel);
ds.setVar("document1");
ds.setFormName('form1');
panel.getData().clear();
panel.addData(ds);
}]]>
</xp:this.script>
</xp:executeScript>