【问题标题】:How to find the common value in the view?如何在视图中找到共同的价值?
【发布时间】: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


【解决方案1】:

使用重复控制会减轻很多痛苦,并且是该组件的主要优点之一。

创建一个源为 view1 的重复控件,定义 var 属性,这将是您获取当前被迭代元素的句柄的方式。其中有一个组件,该组件查找 view2 并查找与正在迭代的当前元素的键匹配的条目数。从中可以判断当前元素是否为普通元素。

如果您不熟悉重复控件,请熟悉一下。找到资源来演示它们的使用应该不难,如果您不确定,我建议您从 NotesIn9 开始。

我怀疑您将很难找到任何具有按照您尝试的方式在 XPages 中编写解决方案的经验的人。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 2021-10-08
      相关资源
      最近更新 更多