如何构建用户友好的过滤器

时间:2009-11-12 17:20:04

标签: windows user-interface desktop-application user-friendly

我们的应用程序在表格中向用户显示大量有价值的信息。我们有一个基于布尔/逻辑搜索的过滤功能。即使在指导之后,用户仍然倾向于不理解如何使用过滤器,因为AND OR> > =等对他们来说是陌生的。这个过滤器对程序员来说很容易,因为它很容易翻译成代码。有关如何使其更加用户友好且不易出错的任何示例?

9 个答案:

答案 0 :(得分:2)

过去,当我需要解决这个问题时,我向用户展示了一个项目列表(在一列或多列中),并为它们提供了一个文本框来输入文本。然后,我会将文本与列中的文本进行匹配,并在键入时折叠列表(删除不匹配的记录)。

这种方法提醒用户谷歌。每个人都知道如何使用Google。

如果您不喜欢最初显示所有项目的大型列表的想法,则可以先显示空的结果窗格,然后在输入搜索后显示结果。

答案 1 :(得分:2)

将运算符转换为纯英文文本,并要求他们从中进行选择。 例如:To

显示所有作者 [文字字段] 且价格 [小于/大于] [文字字段] 的图书

[小于/大于] 是一个下拉列表

[文字字段] 是一个输入框

用户填写完所有字段后生成的文本应该会产生简单的英文

例如:向我展示作者 Stephen King 且价格 10 $

的所有图书

我曾经在自己的应用程序和用户喜欢它的应用程序中使用它。 使用一些漂亮的UI编程,您可以选择将过滤器扩展到n级。

答案 2 :(得分:1)

您可以为该表的最常见查询提供一些预设过滤器 - 如果您正在使用的应用程序可以使用

您可以提供“计数而不是显示”机制,以便用户看到他/她可能检索的行数

你可以在网上为他们提供一些维基页面

你可以给他们一个QBE工具

希望有所帮助 祝你好运MikeD

答案 3 :(得分:1)

根据我的经验,您根本不会让最终用户理解AND和OR条件之间的区别。因此,我构建了我的过滤器,以便内置ANDing或ORing。通常,我的逻辑如下:

  1. 对不同字段的标准进行AND运算以限制结果。

  2. 对同一字段的多个值进行有效OR运算,然后与其他字段的条件进行AND运算。我通常将输入检测到逗号分隔列表(转换为IN()),破折号分隔范围(转换为BETWEEN),通配符值(转换为LIKE)和任何组合(例如Customer ID: 1-10, 50, 52)的单个字段中)。

  3. 我发现大多数用户直观地了解这个系统。

    当然,有时需要具有某种程度ORing的不同界面,在这些情况下,我通常在面板或组框中有一部分搜索用户界面,标记为“其中任何一个都是真的”。 / p>

答案 4 :(得分:1)

我最近一直在研究这个问题。我的解决方案是更具描述性,使用单词而不是符号,并更改允许更可读布局的单词。为了说明,想象一下过滤器表达式:

Breed == "Spaniel" AND (Age == 2 OR Colour == "White")

某些线性查询构建器可能会写这个:

 (  And/Or Field    Operator Value
[ ]        [Breed]  [=]      [Spaniel]
[1] [AND]  [Age]    [=]      [2]
[1] [OR]   [Colour] [=]      [White] 

或者分层结构可以将其显示为:

AND
    [Breed] [Is Equal To] [Spaniel]
    OR
        [Age]    [Is Equal To] [Spaniel]
        [Colour] [Is Equal To] [White]

对于开发人员来说,这两者都是可读的,但对于外行人来说却不那么可读。

我的解决方案更像是:

Show ALL records where
    [Breed] [Is Equal To] [Spaniel]
    Show ANY records where
        [Age]    [Is Equal To] [Spaniel]
        [Colour] [Is Equal To] [White]

所以借用分层方法,但将AND和OR更改为ALL或ANY。这意味着它可以更容易地从上到下阅读。

答案 5 :(得分:1)

在Web应用程序中,telerik有一个good idea with their grid,您也应该可以在桌面应用程序中执行此操作。

答案 6 :(得分:0)

我认为Django的内置管理界面具有非常直观的过滤器UI。

docs中有一个简单的屏幕截图,但您可以做更多事情,尤其是在过滤日期时。

您可能需要仔细查看Django的管理界面,看看是否可以将一些技巧应用到您的案例中。

答案 7 :(得分:0)

我会想到类似于MS Access Query生成器的东西。您可能还希望拥有良好的上下文相关帮助系统,以指导初次使用者。

答案 8 :(得分:0)

Theresa Neil在iTunes Solves the Nested Clause Dillema帖子中阐述了构建复杂规则接口(AKA谓词从句)的几种方法。那里有一些好例子。我非常喜欢Apple在iTunes中的表现(尽管我不使用iTunes)。