如何在视图中查找公共值?

时间:2017-01-04 06:53:08

标签: xpages

我的应用程序正在使用xpages,我尝试在视图中找到常用值。

想象一下view1具有以下值:(位置和官员是视图中的列名称)

Location  | Officer
Australia | Peter
Belgium   | John
Chile     | Ben
Germany   | Charlie
Italy     | Mike
Singapore | Tom

想象一下view2具有以下值:(项目和位置是视图中的列名称)

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关于常用名称的内容,但我担心这不是我要寻找的共同价值。

如果有人让我知道如何从视图中获取共同价值,感激不尽。谢谢。

2 个答案:

答案 0 :(得分:0)

重复控制会减少痛苦,这是该组件的主要优点之一。

创建一个重复控件,其源是view1,定义var属性,这将是您如何获取当前迭代元素的句柄。其中包含一个查看view2的组件,并查找与正在迭代的当前元素的键匹配的条目数。从那里,您可以找到当前元素是否通用。

如果您不熟悉重复控制,请熟悉。找到资源来展示它们的使用应该不难,如果你不确定,我会建议你开始使用NotesIn9。

我怀疑你很难找到任何有使用XPages编写解决方案经验的人。

答案 1 :(得分:0)

如果您使用Java并创建Map或List对象,这可能是一件容易的事。循环遍历第一个视图,然后遍历第二个视图以确定它们是否是常见的,或者是否尝试将它们相互关联。然后将重复绑定到List以显示值。