2014-01-31 29 views
1

我在xpage上定义了一个视图。我也有几个过滤器(基于列),用户可以选择和组合以过滤视图中的结果。我生成一个查询字符串基于这个,我在dominoView.search(做一个完整的刷新)构造。我想要做的是获得搜索结果,以便我可以更新页面上其他位置显示的某些计数。不过,我很难弄清楚我可以在哪里执行这个逻辑。我试图使用view.getAllEntries(),然后遍历集合。有时它看起来像是有效的,但有时候我似乎正在得到未经过滤的观点。有人建议我在其中一个事件(beforePageLoad?)内部显式调用view.FTSearch,并在调用getAllEntries之后立即调用view.cope,但将结果保存在viewScope中,但当我试图做到这一点时,出现“Error while browses Notes view”运行时错误。任何指针? TIA!在已过滤的xpages视图中检索列值

编辑:在学习了xpages生命周期后(这仍然有点令人困惑),我想我可以微调我的问题。这是我的第一个stackoverflow问题,所以我希望这是可以做和生产....

正如我所描述的,我有一个dominoView定义在我的xpage。重复遍历视图的行,显示文档中的某些字段。如果我在搜索属性中定义了一个查询,则重复正确显示缩小的文档集合而不是完整的集合。 (查询是通过SSJS在组合框的eventHandler中的viewScope中定义的某些变量在搜索属性中计算的。)但是,如果我尝试使用myView访问重复呈现部分内部(使用SSJS)视图中的当前条目。 getAllEntries(其中myView被定义为重复的“值”),即使查询已完成,我仍然可以获取所有文档。似乎在这一点上,视图变量已经应用了搜索(因为重复的工作),为什么不同的结果呢?是否有另一种方式来访问视图的行?使这更加复杂化,这只是一个简单的实验,可以澄清问题。正如我之前指出的那样,我实际上并不想访问重复内的视图数据,我想在xpage文件中的重复之前定义的某些组合框的渲染或值部分中访问它。

我希望这是现在更有意义....

编辑#2:我忘了补充一点,如果我打电话myView.getAllEntries之前手动调用FTSearch(或FTSearchSorted),那么我想我可以让这个工作。除了视图的内置搜索之外,似乎没有必要这么做。

+0

我最初的尝试涉及调用javascript中的view.getAllEntries(),并附加到组合框,向用户呈现可用过滤器。实际上,我正在对文档进行迭代,并检索与该组合框过滤器相关的字段值,对它们进行排序,然后计算每个存储在parens中的值。例如,这很像您在亚马逊看到的多面搜索。如果用户选择了第二个过滤器,我似乎得到了整个未过滤的视图,所以感觉我需要了解何时执行视图的搜索并在那里插入我的代码。 –

回答

0

从我得到的结果来看,您希望遍历视图中之前已被过滤的条目,即其结果条目集合小于视图本身。

我还没有得到的是你想要做什么结果,或者你想要从你的过滤视图的迭代中获得什么(你提到一些计数要显示在别的地方)。

可能一个好方法是使用视图的.getAllEntriesByKey方法,该方法返回一个NotesViewEntryCollection对象,然后该对象可用于您的迭代。

不要忘记回收生成的NotesViewEntry对象;这个原因在这里已经多次解释了。

+0

是的,我想迭代过滤条目。原因是我在左侧定义了几个可能的过滤器(基本上对应于视图中的列),用户可以选择其中一个或多个过滤器来减少结果。如果选择了过滤器,我想更新其他可用过滤器的匹配计数。我希望这是明确的。列可能未被排序。 PS新的xpages,所以我不清楚页面生命周期和过滤视图的内容准备好查询。谢谢! –

+0

因此,您正在考虑进行某种深入过滤?标准视图过滤方法可能会变得非常复杂; view.getAllEntries(),view.getAllEntriesByKey()等实际上与它们的LotusScript等价物相同。所以如果你熟悉经典的LS开发,那么你应该知道你能做什么以及如何处理结果。 –

+0

我其实也是一个经验不足的经典Notes开发者。我的背景更多的是java,perl,C++等等。无论如何,谢谢你;正如我在另一条评论中提到的那样,主要问题可能只是不知道何时将搜索过滤器应用于视图以及何时可以安全地获取视图的条目。 –