2

假设我有一个可以通过在下拉列表中指定一些值来限制的报告。此下拉列表引用了一个包含 > 30,000 条记录的表。我认为填充下拉列表是不可行的!那么,在这种情况下,让用户能够选择值的最佳方式是什么?这些值并没有真正的类别,即使我按值的第一个字母细分(通过一些嵌套下拉情况),仍然可能留下几千个条目。

处理这个问题的最佳方法是什么?

4

6 回答 6

5

搜索,不要分类。

您可以将控件显示为一个简单的文本框,当用户输入几个字符时,您可以弹出一个类似自动完成的下拉菜单来选择最终值。这是用于自动完成的 jQuery 插件的链接

于 2010-03-15T03:44:41.873 回答
3

我真的不会有 30,000 个元素的下拉菜单。GUI 应该让用户更轻松,而不是更难。

如果除了按字母顺序之外没有其他方法对数据进行分类,则不限于仅使用第一个字符的两阶段方法。使其依赖于前两个字符。

这将在第一个下拉列表中为您提供最多 676 个(仅假设 alphas)和在第二个下拉列表中(平均)为 44 个。

我们实际上采取了两种方法来解决这个问题。BIRT(我们使用)允许级联参数,只要您更改第一个下拉框,就可以轻松运行该二级查询。

然而,我们的一些客户对漂亮的 GUI 东西的关心绝对为零(当然,除了漂亮的 9 点 Verdana 的输出和用于安抚管理的漂亮图表)。他们更喜欢自由格式的文本输入字段,他们只需输入"SYS_PAX_%"即可更改查询。

当然,这些客户确切地知道他们的数据库中的数据是什么,并使用适合使用 SQLLIKE子句进行分类的值。其他人更喜欢搜索能力。

于 2010-03-15T03:43:45.160 回答
1

大约 2 年前,我对 asp.net 下拉框有同样的问题。

相信我,甚至不要尝试。使用上面的自动完成建议。我发现显示超过 5000 条记录的任何内容都会导致浏览器崩溃。

只是我的2美分。

于 2010-03-15T05:50:55.837 回答
0

+1 @pax。我仍然希望看到 30K 的下拉菜单!:)

@JustAProgrammer,也许您可​​以做一个文本框,人们可以在其中输入他们正在寻找的内容的开头,您可以在他们输入时进行过滤。

于 2010-03-15T03:45:34.190 回答
0

如果您是从性能角度而不是可用性角度提出问题,我会考虑使用实时列表方法,该方法在您向上或向下滚动时仅按需加载列表项的子集。如果用户快速向下点击列表,比如中间,它将加载另外 10 个与该位置对应的元素。渲染时间和加载时间都会快得多。

像分页,但“流畅”。

于 2010-03-15T03:52:38.193 回答
0

最好有上面建议的自动完成下拉菜单。但这将要求用户对开始的条目类型有所了解。如果用户熟悉数据,那就去吧。

或者,如果您可以对数据进行分类,那么您可以先从类别开始,然后根据选择,您可以使用实际值填充相关下拉列表,这些实际值将是原始值的子集。

于 2010-03-15T04:43:47.090 回答