【发布时间】:2017-01-04 06:53:07
【问题描述】:
我的应用程序正在使用 xpages,我尝试在视图中找到公共值。
想象 view1 有以下值:(Location 和 Officer 是视图中的列名)
Location | Officer
Australia | Peter
Belgium | John
Chile | Ben
Germany | Charlie
Italy | Mike
Singapore | Tom
想象 view2 有以下值:(Item 和 Location 是视图中的列名)
Item | Location
Book | Brazil
Book | Italy
Fiction | Singapore
Journal | Australia
Magazine | Australia
Magazine | Austria
Movie | Portugal
Movie | Spain
为了增强应用程序,我必须比较两个视图之间的值并定义项目是普通项目还是特定项目。
在 view2 中,如果该项目有多个位置,则该项目是一个普通项目。如果该项目具有一个位置,则该项目是特定项目。例如,在 view2 中,书籍、杂志和电影是常见的项目,而小说和期刊是特定的项目。
从下面的代码可以看出view1和view2的对比。
var keyvalue = sessionScope.keyvalue;
var text = "";
var message = "";
var item_msg = ""; //show whether the item is common item or specific item
var view1 = @DbLookup(@DbName(), "view1", keyvalue , 0)); // use keyvalue to lookup in view1
var view2 = @DbLookup(@DbName(), "view2", view1 , 1)); // use view1 value to lookup in view2
text +="<table><tr><td><u><b>header</u></td></tr>"
for(var x = 0; x < view1.length; x++)
{
message = "value does not match";
for(var y = 0; y < view2.length; y++)
{
if(view1[x] == view2[y])
{
message = "value matches";
break;
}
}
text +=("<tr><td>" + view1[x] + "</td><td>" + message + "</td><td>"+item_msg+"</td></tr>");
}
return text +"</table>";
我想结果会是这样的:
Australia | value matches | common item
Belgium | value does not match | not available as value does not match
Chile | value matches | specific item
Germany | value does not match | not available as value does not match
Italy | value matches | common item
Singapore | value matches | common item
关于这个post,我可以使用for循环和@DbLookup来比较两个视图之间的值。
但是我不知道该项目是普通项目还是特定项目,因为我不确定哪个是我可以用于@DbLookup 的键。
我读过这个https://www-10.lotus.com/ldd/ddwiki.nsf/dx/NotesName_sample_JavaScript_code_for_XPages关于通用名的内容,但恐怕这不是我要寻找的通用值。
如果有人让我知道如何从视图中获得共同价值,不胜感激。谢谢。
【问题讨论】:
-
我不明白您的问题。我们不知道您的 dblookup 中的键应该是什么,您是程序员……
-
@zerohero,感谢您的评论。据我所知,如果我使用 DbLookup,关键是要检索一个值。实际上,我一直使用view1中的位置作为在view2中查找的关键,但结果不成功,因此我删除了帖子中的那部分代码以使代码清晰。我还在做这部分,所以我以后可能会改进这篇文章。
-
为什么 for 循环不适合你?
标签: xpages