Xpages 在xPage上查找大列表

Xpages 在xPage上查找大列表,xpages,Xpages,我有一个大约10000个条目的列表(并且在不断增加),我需要能够在xPages应用程序中引用这些条目。我使用@DbLookup有查找限制,所以我考虑了其他选项。不幸的是,我继续遇到这些限制 var lookupView:NotesView = database.getView("LookupView"); sessionScope.lookupList = lookupView.getColumnValues(0) + "|" + lookupView.getColumnValues(4);

我有一个大约10000个条目的列表(并且在不断增加),我需要能够在xPages应用程序中引用这些条目。我使用@DbLookup有查找限制,所以我考虑了其他选项。不幸的是,我继续遇到这些限制

var lookupView:NotesView = database.getView("LookupView");
sessionScope.lookupList = lookupView.getColumnValues(0) + "|" + lookupView.getColumnValues(4);
目前,我正在页面加载中将查找列表加载到会话范围变量中(这会影响性能),而引用列表则加载到组合框的范围变量中

我使用以下简单的过程来加载组合框的列表。然而,这也受到了限制

var lookupView:NotesView = database.getView("LookupView");
sessionScope.lookupList = lookupView.getColumnValues(0) + "|" + lookupView.getColumnValues(4);

我想要一个执行查找的方法,该方法可以处理较大的列表(主优先级),性能排名第二。该页面由数量有限的用户使用,功能是最重要的。

请查看此代码片段,直接使用它或将其用作灵感


您应该考虑将列表存储在应用程序范围内,因为该列表对于所有用户来说都是相同的。这意味着您需要将代码段中的代码更改为使用applicationScope而不是sessionScope。

查看此代码段,直接使用它或将其用作灵感


您应该考虑将列表存储在应用程序范围内,因为该列表对于所有用户来说都是相同的。这意味着您需要更改代码段中的代码以使用applicationScope而不是sessionScope。

我怀疑您的用户是否希望或需要从10k+行的combo中选择一些值


重新考虑一下您的方法,您可以使用自动完成功能,并在实时视图中进行动态筛选/搜索(不需要范围变量),正如Mark所指出的那样。另一种方法是将该值划分为一些组,并使用级联选择/查找功能将该组合拆分为两个或三个。第一个选择一组,第二个只查找第一组中的选项。这样,您可能不会遇到@DbLookup限制。

我怀疑您的用户是否希望或需要从10k+行的组合中选择一些值

var lookupView:NotesView = database.getView("LookupView");
sessionScope.lookupList = lookupView.getColumnValues(0) + "|" + lookupView.getColumnValues(4);

重新考虑一下您的方法,您可以使用自动完成功能,并在实时视图中进行动态筛选/搜索(不需要范围变量),正如Mark所指出的那样。另一种方法是将该值划分为一些组,并使用级联选择/查找功能将该组合拆分为两个或三个。第一个选择一组,第二个只查找第一组中的选项。这样,您可能不会遇到@DbLookup限制。

Per所说的应该可以解决检索大量数据的问题。将其缓存在作用域中(对于服务器端)可以解决大多数性能问题。下一个问题可能是客户机上的性能:一个(combobox)元素有那么多数据是个坏主意。您可能需要查看Select2:它可以接受用户输入,在服务器上执行查询,并在客户端显示结果。也许你可以从我写的这一系列文章中获得更多的灵感:另一个选项是带有搜索选项的扩展库值选择器。这可以指向数据提供者的视图,使用dominoViewValuePicker数据提供者感谢Paul。我假设值选取器在数据量方面会有与我目前使用的视图相同的问题?我会调查的。可能不会,虽然我已经有几年没有看过代码了。如果它的工作方式与dominoView数据源类似,则可能仅从ViewNavigator加载有限的集合,并根据需要进行延迟加载。无论迭代收集和构建HTML需要多长时间,仅发送10000个条目的HTML都需要很长时间。Per所说的应该能够解决检索大量数据的问题。将其缓存在作用域中(对于服务器端)可以解决大多数性能问题。下一个问题可能是客户机上的性能:一个(combobox)元素有那么多数据是个坏主意。您可能需要查看Select2:它可以接受用户输入,在服务器上执行查询,并在客户端显示结果。也许你可以从我写的这一系列文章中获得更多的灵感:另一个选项是带有搜索选项的扩展库值选择器。这可以指向数据提供者的视图,使用dominoViewValuePicker数据提供者感谢Paul。我假设值选取器在数据量方面会有与我目前使用的视图相同的问题?我会调查的。可能不会,虽然我已经有几年没有看过代码了。如果它的工作方式与dominoView数据源类似,则可能仅从ViewNavigator加载有限的集合,并根据需要进行延迟加载。无论迭代集合和构建HTML需要多长时间,仅发送10000个条目的HTML都需要很长时间。谢谢-是的,对于所有用户来说都是一样的,因为它是一个静态查找列表。将其移动到应用程序范围是有意义的。我会检查链接。感谢您的链接。只是提醒一下-如果源代码视图的内容超时更改,应用程序范围将不会更新。您需要重新启动http任务以刷新其值(不过,刷新作用域变量的其他方法很少)。谢谢您-是的,它对于所有用户都是一样的,因为它是一个静态查找列表。将其移动到应用程序范围是有意义的。我会检查链接。感谢您的链接。只是提醒一下-如果源代码视图的内容超时更改,应用程序范围将不会更新。您需要重新启动http任务以刷新其值(不过,很少有其他方法可以刷新范围变量)。
var lookupView:NotesView = database.getView("LookupView");
sessionScope.lookupList = lookupView.getColumnValues(0) + "|" + lookupView.getColumnValues(4);