UI允许700多个选择

时间:2010-04-12 15:16:55

标签: .net wpf winforms user-interface

在我的桌面.NET应用程序中,我编写了(供内部使用),我需要允许我的用户将诊断应用于成员计划。目前系统中有700个并且还在不断增长。我需要允许他们一次添加多个diapnosis。我目前通过combo check list box允许这样做。这对我自己和用户来说都是 INSANELY 非常有用。

我正在寻找的是如何向用户展示这些内容。理想情况下,我还需要为每个标准显示两个标准。 Diagnosis NameDiagnosis Code

想法?你会如何解决这个问题?

我正在使用.Net 3.5sp1和SQL 2005作为后端。我不在乎解决方案是 WPF 还是 Winforms

8 个答案:

答案 0 :(得分:6)

我会使用2个列表视图,2个按钮和文本框。

一个列表视图用于保存可能的值,一个列表视图用于保存选定的值。文本框可用于过滤可能的值(如果用户输入MyValue仅显示包含MyValue的值等),则按钮将是标准按钮箭头,用于在列表视图之间移动选定的行。

扩展espais关于向下钻取的答案,如果可能的话,将一个或两个列表视图改为树视图会更好,这样你就可以将深入挖掘与过滤相结合,并能够分辨哪些是哪里等

答案 1 :(得分:5)

你需要改变思路。它不是为他们提供数据,而是为了记录用户的意图。

当用户坐下来诊断会员计划时,他们并没有考虑“我应该选择700个选项中的哪一个,哦,我们只需点击一下即可”。事实上,人们很少坐在电脑旁,因为商务应用程序很有趣 - 他们通常会用它们来完成一些特定的工作。在你的情况下,这听起来像是在尝试进行特定的分析。每种类型的分析都可以有多种用途,您也应该捕获它。

所有这些概念都应该是明确的。例如(在某种程度上构建您的域名),如果有一个选项可以显示所有拥有用餐计划的用户以及可以过滤孩子也有会员资格的用户的选项,那么这些选项可能不会同时使用。相反,您可以询问您的用户他们想要做什么:分析成本,或分析成员的传播。这样的事情。您的用户可能只使用您的应用程序发出最多几十个类型的查询。

一旦你知道他们正在做什么样的工作以及他们正在做什么,我愿意打赌选项集会大大减少。

我已经连接了十几次,但this herding code podcast with Greg Young必须听取每个开发人员的意见。

答案 2 :(得分:3)

您可以使用某种方法来限制一次显示的用户数量...即以某种方式对其进行分类(然后您可以“向下钻取”到越来越小的组中。)

您还可以实施一种搜索,在您键入名称时自动建议名称,以帮助限制一次显示的数量。

答案 3 :(得分:1)

我会实现类似的东西:

Available              Assigned
+-----------------+    +-------------------+
|                 |    |                   |
|                 |    |                   |
|                 |    |                   |
|                 |    |                   |
|                 |    |                   |
|                 |    |                   |
|                 |    |                   |
+-----------------+    +-------------------+

Filter: -----------

每个框都是列表视图,过滤器文本框允许用户过滤可用的诊断',并且项目可以在框之间拖放。

分配项目后,鼠标悬停将显示内联删除按钮,以允许用户删除以前分配的值。

答案 4 :(得分:1)

问题在于,根本没有一个控件并不笨重,其中有700多个项目。树,列表视图,组合框,数据网格...当你有那么多项目时,它们都是一种痛苦(出于不同的原因)。

我建议提供A)数据的某些分类以限制选择并使用组合框在这些类别之间切换,或者B)具有自动完成的文本输入以减少从中减少项目的大小选择。

对于B,我会使用(相当标准的)两个列表视图,文本输入和两个按钮模式。连接文本更改事件以“过滤”左侧列表视图,使用“添加”按钮将选定的行添加到右侧列表视图中。使用“删除”按钮将它们从右侧文本视图中取出。

你可以通过他们的名字或他们的识别代码来聪明地减少项目 - 有些人记得012345意味着某些事情,因为它通常被选中 - 或者你可以设计一个不同的方案来减少。

我在几种产品中使用B),效果很好。

答案 5 :(得分:1)

除了George的建议之外,我还想补充一点,如果您的选项需要被发现,将选项分组到类别中可以快速将人们带到他们需要查看的位置。

但是,请注意这一点,因为开发人员如何将选项与用户分类通常是不同的。

另一个选择是创建工作流程并重新思考界面。我知道你提到他们需要同时输入它们,但是如果有机会创建一个多页面条目(类似于向导),它就不那么令人难以置信了。 “从第1类中选择选项......”,然后在下一页中选择。请再次注意,让您的用户知道他们在您的应用程序范围内的位置。第2步,共8步。

有很多因素,包括应用程序的使用频率,用户的技能水平,最终要完成的是什么?

HTH

答案 6 :(得分:1)

从历史使用数据挖掘到索赔裁决系统并且必须处理诊断/程序代码,您可能希望切换到控件的组合。首先,我会有一个网格(允许超过1或2个诊断,所以你不会卡在那里,如果需要更多的话,不得不重新设计一个表格)的输入诊断代码。在它上面(或下面),有一个文本框。

如果用户有一些他们正在输入的文档并且在那里有代码,请允许他们自由进入文本框。在验证文本框期间,查询有效代码表,并获取代码和说明,如果只找到1个条目,则填充在上面的网格中。如果大于1,则显示一个弹出窗口,其中包含与您的查询匹配的选项网格,并允许他们从该选择中进行选择。任何此类选择都将添加到主网格显示中。如果找不到条目,​​则可以来自类型o或不存在的代码。然后我会删除字符串直到你查询并且DID收到一些结果。然后,如前所述,调用辅助表格从可用的诊断代码中挑选。例如:如果无法找到诊断代码“12345”,请查找“1234”,“123”,“12”,“1”,直到SOMETHING返回结果。

此外,对于查询,如果确定文本是数字,则基于代码进行查询。如果是alpha,则查询描述......无论哪种方式,都可以显示结果集中的IS,而不是在不适用的项目列表中绊倒。

答案 7 :(得分:0)

我认为是一个简单的文本输入字段,带有自动完成下拉列表。在进行选择时,将另一个字段添加到页面以进行下一个条目。