1

我有一个未绑定到数据源的 XPage。XPage 包含两个自定义控件,每个控件都绑定到不同的数据源,例如 mainDoc 和 transDoc。从 transDoc 中的操作按钮,我需要获取主自定义控件的数据源和数据源“mainDoc”的句柄。这个 Action 按钮需要在 mainDoc 上执行保存,以及一些其他的东西。我有一些“隐藏” mainDoc 自定义控件并显示 transDoc 控件的逻辑。然后用户在 transDoc 控件中填写一些信息并单击需要先保存 mainDoc 然后保存 transDoc 的操作。扑救的顺序至关重要。在某些情况下,我们可能会隐藏 transDoc 控件并在不保存的情况下取消隐藏 mainDoc 控件,我让该部分工作,因为我不需要获取 dataSource 句柄来执行此操作。

我似乎隐约记得在某处读过类似的东西,但现在似乎找不到了。

4

1 回答 1

2

从另一个自定义控件访问数据源的一种简单方法是使用范围变量

在第一个自定义控件中将视图范围变量设置为事件中的数据mainDocbeforePageLoad

<xp:this.beforePageLoad>
    <![CDATA[#{javascript:viewScope.sourceMainDoc = mainDoc}]]>
</xp:this.beforePageLoad>

然后您可以使用此视图范围在第二个自定义控件中工作,例如保存mainDoc

<xp:this.action>
    <![CDATA[#{javascript:viewScope.sourceMainDoc.save()}]]>
</xp:this.action>

选择

使用Sven Hasselbach 的方式从自定义控件中获取数据源。你会得到一个 instance 的对象com.ibm.xsp.model.domino.DominoDocumentData。如果您想使用与普通数据源 Domino 文档对象 (= NotesXspDocument) 相同的方法,则必须首先获取实例com.ibm.xsp.model.domino.wrapped.DominoDocument对象getDataObject()。你可以这样做:

function getDatasource( componentId:String, dataSourceName:String ):com.ibm.xsp.model.domino.DominoDocumentData {
    ...
}
var mainDoc:com.ibm.xsp.model.domino.wrapped.DominoDocument = getDatasource("idDSComponent", "mainDoc").getDataObject();
mainDoc.save()
于 2013-08-10T20:33:39.437 回答