【发布时间】:2012-02-23 17:44:31
【问题描述】:
我有一个自定义控件,其中包含用户将输入文档 ID(不是注释 ID 或 UNID,只是一个唯一编号)的字段。此数据源名为 document1。当他们退出该字段时,我执行查找并显示具有该 ID 的文档或 extlib 对话框控件(数据源 bundleDoc)中的新文档。保存 bundleDoc 后,我想更新 document1 上的日志字段以指示添加了捆绑文档。
我可以保存 bundleDoc 并关闭(隐藏)对话框,但对话框中“保存并关闭”按钮中的代码无法“看到”document1。我无法使用 document1.getItemValueString 或 getComponent 来引用它。 getItemValueString 返回空字符串,getComponent 抛出错误,因为返回值为 null。
我会发布一张图片以提供视觉帮助,但我还没有足够的声誉。 :( 我错过了什么?因为它在同一个 XPage 上,我不应该能够从对话框控件中访问 document1 吗?
更新:对话框表单上的两个字段已计算出默认值,它们使用 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 的值,它显示“已添加捆绑包 - 匿名”。
【问题讨论】:
-
唐,您能否在您的问题中添加一些代码以更清楚地说明您要做什么?这将帮助您获得答案
-
谢谢,每。今天早上添加了一些代码。希望这会提高我的声誉,以便在需要时发布控件的图片。