Xpages中的两个组合框使用@DbLookup确定其他计算字段的值

时间:2013-05-30 12:47:26

标签: xpages

我有一个表单,其中有几个字段根据组合框进行更新。第一个组合框使用@DbColumn来拉取视图中的第一列。第二个组合框根据第一个组合框的选择在同一视图中拉出第二列。这很好。问题是;我有几个随后的计算字段,它们使用第二个组合框中的选择从同一视图的后续列中提取。那些计算字段不起作用。我以为我只能在Javascript中使用@DbLookup命令来调用视图中的值,但它不起作用。
这是第一个组合框的javascript代码(非常简单):

@DbColumn(@DbName(), "PLBV", 1)

这是第二个组合框代码:

var vendor = getComponent("POVendor").getValue();
var items = @DbLookup(@DbName(), "PLBV", vendor, 2);
if (@IsError(items))
return "Please select a Vendor first";
else
return items;

这两个例程都完全按照我的意愿工作。这是问题所在。我还有三个字段应根据第二个组合框的值填充。它不起作用。我会给你代码,但它非常基本。

var item = document1.getItemValue("Item_1");
var cost = @DbLookup(@DbName(), "PLBV", item, 3);

return cost;

此代码返回一个空白值(字段中没有任何内容)。我做错了什么?

2 个答案:

答案 0 :(得分:2)

如果您在保存文档之前尝试访问该项目,则需要使用以下代码:

var item = getComponent("Item_1").getValue();
var cost = @DbLookup(@DbName(), "PLBV", item, 3);

您可能需要使用getSubmittedValue()而不是getValue(),具体取决于文档的验证设置。

希望这有帮助。

马特

答案 1 :(得分:0)

问题来自于我试图从我填充第二个组合框的同一视图中调用列的值。该视图具有按供应商名称分类的第一列。第二列(我用来填充第二个组合框的列)是该供应商提供的产品列表。那部分工作正常。然而;当我试图根据第二个组合框(产品)的值从同一视图调用第三列的值时,我什么也没得到。
我有一个单独的视图,它是一个完整的产品列表,没有被提供产品的供应商分类。我根据第二个组合框中的产品名称从该视图调用了colunms&我的所有计算字段都有效。现在我唯一的问题是,当两个不同的供应商对两种不同的产品使用相同的产品名称时会发生什么?当我来到它时,我会越过那座桥。感谢大家的帮助。它可能没有解决冲浪问题,但它让我对幕后发生的事情有了更深入的了解。