Dialog 对话框控件无法在XPage上看到第二个数据源

Dialog 对话框控件无法在XPage上看到第二个数据源,dialog,xpages,Dialog,Xpages,我有一个带有字段的自定义控件,用户将在其中输入文档ID(不是note ID或UNID,只是一个唯一的数字)。此数据源名为document1。当他们退出该字段时,我执行查找并在extlib对话框控件(数据源bundleDoc)中显示具有该ID的文档或新文档。保存bundleDoc时,我想更新document1上的日志字段,以指示已添加捆绑文档 我可以保存bundleDoc并关闭(隐藏)对话框,但对话框中“保存和关闭”按钮中的代码无法“查看”文档1。我不能使用document1.getItemVal

我有一个带有字段的自定义控件,用户将在其中输入文档ID(不是note ID或UNID,只是一个唯一的数字)。此数据源名为document1。当他们退出该字段时,我执行查找并在extlib对话框控件(数据源bundleDoc)中显示具有该ID的文档或新文档。保存bundleDoc时,我想更新document1上的日志字段,以指示已添加捆绑文档

我可以保存bundleDoc并关闭(隐藏)对话框,但对话框中“保存和关闭”按钮中的代码无法“查看”文档1。我不能使用document1.getItemValueString或通过getComponent引用它。getItemValueString返回空字符串,getComponent抛出错误,因为返回值为null

我本来会贴一张图片来帮助视觉效果,但我还没有足够的声誉( 我遗漏了什么?我不应该从对话框控件获取document1,因为它位于同一个XPage上吗

更新:对话框窗体上的两个字段计算了默认值,使用getComponent从document1获取它们的值。因此,至少在加载对话框时,它可以看到document1。此外,bundleDoc未定义为对话框控件的数据源。我明天将尝试使用它,看看它是否有区别

更新2:仍然没有足够的信誉发布图片,但这里有一些代码。这是一个包含对话框控件的自定义控件。document1定义为自定义控件的数据源,bundleDoc定义为对话框控件中包含捆绑文档字段表的面板的数据源

对话框控件中的BundleID字段具有使用以下命令计算的默认值:

if (bundleDoc.isNewNote()) {
    getComponent("inputBundleID").getValue();
} else {
    bundleDoc.getItemValueString("BundleID");
}
StorageLocationID的公式与此类似,只是组件为inputStorageTrayID

这是“保存和关闭”按钮中的代码:

bundleDoc.save();
var newArr = new Array(document1.getItemValue("WorkLog"));
newArr.push("Added bundle " + document1.getItemValueString("BundleID") + " - " + session.getCommonUserName());
document1.setValue("WorkLog",newArr);
document1.save();
getComponent("dialog1").hide();

错误发生在document1.save行,但它没有从document1获取BundleID(我将sessionScope变量设置为newArr的值,它显示为“Added bundle-Anonymous”。

这取决于您添加数据源的位置。如果document1设置为自定义控件1的数据源,bundleDoc设置为自定义控件2的数据源,则您无法在自定义控件中定义的自定义控件之外访问它们


如果添加document1作为自定义控件的数据源,并在同一自定义控件中创建xe:dialog控件(包含带有bunleDoc数据源的面板),则应该能够访问document1(并更新/保存它)通过对话框上的按钮。

我认为问题最初是由缓存问题引起的,因为它在我发布问题的第二天开始工作

但是,我还必须做一件事,才能让页面按我想要的方式工作。这是Designer中的XPage:


要将“保存和关闭”按钮中的值写回WorkLog字段,我必须在打开对话框之前保存document1数据源。然后,document1在整个“保存和关闭”代码中都被识别出来,并且始终正确保存。

Don,您能否在您的问题中添加一些代码,以便更清楚地说明您要做什么?这将帮助您获得答案谢谢,Per。今天早上添加了一些代码。希望这将提高我的声誉,以便在需要时发布控件的图片。谢谢,Mark。请参阅我在原始问题中添加的内容。您的第二段描述了我如何定义数据源。我将尝试更新documen在我保存bundleDoc数据源之前,我必须说对话框控件中有一个bug。