如何build立一个用户友好的filter

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

在Web应用程序中,telerik对他们的网格有一个好主意 ,你也应该可以在桌面应用程序中做到这一点。

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

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

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

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

向我展示作者为[文本字段]且价格为[小于/大于] [文本字段]的所有图书

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

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

用户输入所有字段后的结果文本应该会导致简单的英文

例如:给我看所有书的作者是斯蒂芬·金 ,价格低于 10美元

当我习惯于自由职业者和用户喜欢它时,我在我的一个应用程序中使用了它。 使用一些漂亮的用户界面编程,你可以选择扩展到n级的过滤器。

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

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

你可以在网上给他们提供一个维基页面

你可以给他们一个QBE工具

希望MikeD好运

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

  1. 不同领域的标准被联合起来限制结果。

  2. 相同字段的多个值被有效地“或”在一起,然后被“与”到其他字段的标准上。 我通常检测输入到逗号分隔列表(转换为IN()),破折号分隔范围(翻译为BETWEEN),通配符值(翻译为LIKE)和任何组合(例如Customer ID: 1-10, 50, 52 )。

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

当然,不同的界面需要一定程度的“或”,在这种情况下,我通常在标有“任何一个是真的”的面板或组框中都有一段搜索用户界面。

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

 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。 这意味着它可以更容易地从上到下读取。

我认为Django的内置管理界面有一个非常直观的过滤器用户界面。

文档中有一个简单的屏幕截图,但您可以做更多,特别是在日期过滤时。

你可能想仔细看看Django的管理界面,看看你是否可以把他们的一些技巧应用到你的案例中。

我会想一些类似MS Access查询生成器。 你也可能想要有良好的上下文敏感的帮助系统,将引导第一次用户。

Theresa Neil介绍了在iTunes解决嵌套子句Dillema帖子中构建复杂规则接口(AKA谓词子句)的几种方法。 那里有一些很好的例子 我真的很喜欢苹果在iTunes中的做法(虽然我不使用iTunes)。