从非常大的列表中选择项目

时间:2010-04-28 15:16:03

标签: asp.net user-interface hci

假设我有几千个组织的列表,用户需要能够选择其中一个。该列表太大而无法在页面加载的下拉列表中填充,并且用户通常知道他们想要什么,但这不是组织名称的第一部分。也就是说,他们知道“收藏”,但不知道该组织的确切名称是“收藏部”。因此用户需要/想要输入一些信息。

使用某种自动填充文本框很容易,但我不想让用户输入随机文本 - 他们必须明确选择其中一个组织。

什么是最好的解决方案?

9 个答案:

答案 0 :(得分:2)

IMO我将简化用户界面:

  • 输入字符串的文本框
  • 下拉设置过滤器选项,如:“contains | starts with | ends with”
  • 按钮“查找”

然后,我将根据搜索字符串&amp ;;填充视图。让用户选择有效的项目或优化搜索

IMO有类似自动完成的东西,你最终会编写很多解析代码来获得字符串&那么可能存在服务器端负载注意事项......

HTH。

另外检查“facetted navigation”是否是您需要的。参考:http://www.alistapart.com/articles/design-patterns-faceted-navigation/

答案 1 :(得分:1)

所以在我看来你的主要挑战是

  1. 表示用户需要从列表中选择一个组织(并且仅从列表中选择)。
  2. 表示名单上有很多组织。
  3. 为用户提供一些快速查找列表中组织的方法。
  4. 我想说的是一个选择器控件,它与你设计的其余部分配合,上方有一个搜索框。然后,您应该对列表进行分页,因为会有很多页面包含许多元素,表明用户肯定会使用搜索。搜索本质上就像自动完成一样,但它不会改变文本的找到选项,而是改变分页列表的内容。如果你逐个字符地执行此操作(或使用Reactive Extensions限制),很明显你只是过滤列表以便更容易选择。

答案 2 :(得分:0)

您可以使用CustomValidator来确保收藏中包含的TextBoxes内容。

答案 3 :(得分:0)

您可以使用Ajax自动完成控件:http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/AutoComplete/AutoComplete.aspx。如果用户输入了一定数量的字符,您可以选择仅进行查找。

您可以创建一个静态Web方法来查询集合(您可以使用LINQ)并返回匹配的组织。

您显然需要在之后验证文本框输入。

答案 4 :(得分:0)

是否可以将列表更像树一样,因此它不是单个列表。例如。你可以有一个像“政府部门”这样的分组,然后添加收藏部门。然后让用户先选择顶级分组,然后向他们展示该组中较短的组织列表?

答案 5 :(得分:0)

听起来好像你的数据列表应该真的存在于数据库中,或者至少存储在远离UI的位置。 无论它真正存储在哪里,都为每个条目放置一个关键字,说“收藏”。关键字列表可作为自动完成功能的一部分提供。然后单独搜索关键字。

答案 6 :(得分:0)

如果您可以按类别划分项目,是否会使用某种树控制帮助?

因此,当用户单击某个节点时,您只加载该节点中的项目。等等。

答案 7 :(得分:0)

我会把它分成两条路......

为输入正确标题的人(即收藏部门)使用自动填充文本框;和一个单独的搜索按钮,以搜索可能的匹配。搜索按钮会将您带到结果页面以选择所需的选项。此功能类似于MSDN上的搜索方式。

答案 8 :(得分:0)

最初树视图听起来很酷,但您确定单个分类会将数据减少为可管理的集合吗?如果80%的数据被归类为“政府部门”,这对事情没有帮助。

问题是您希望标准允许用户将大型列表快速拆分为更易于使用的较小集合。此外,应该有足够的灵活性来应对数据的变化。

我建议使用像iTunes这样的标记模式。在我的图书馆中,“摇滚”描述了我收藏的80% - 但对于像随机随机播放这样的东西仍然是一个有用的分类。我也有能力堆叠标签,所以我可以使用genre =“rock”,decade =“1990”并快速将我的数据筛选到任何感兴趣的内容。

在用户界面中,我建议一个允许用户应用“过滤器”的部分,这只不过是为标签选择特定值。将列表分成几页,让他们看到潜在匹配的记录。

之情况: - 导航到screeen XYZ,看看有10,000家公司可供选择 - 单击“分类”并选择“政府部门”,列表更新以指示现在有1,000个。 - 点击“区域”并选择“南”并查看我的列表下降到200。 - 按名称对列表进行排序,然后选择(或滚动浏览,无论如何)