it-swarm.cn

批量操作:当并非所有项目都支持某个操作时该怎么办

设想以下情形:用户选择一堆项目,然后出现“批量动作”框;用户选择并非所有项目都支持的操作(出于某种原因或另一种原因)。

在这种情况下,您要做什么:将操作应用于支持该操作的项目?根本不执行操作并显示错误消息?

我目前的想法是:

  • 将操作应用于支持它的项目;对于导致项目消失的操作(例如“删除项目”),我会将有问题的项目留在后面,仍然选中,并显示一条错误消息:“某些项目无法删除”。
  • 禁用all项目不支持的操作,并提供“修复此”链接,以取消选择该操作中有问题的项目。

另外,您能指出我一些相关的实际例子吗?

13
Dan Burzo

如果没有更多信息(例如,它是台式机还是Web应用程序?),这里有个主意:

alt text

当用户选择她想要完成的动作时,如果该动作可以应用于all所选项目,则对列表项不执行任何操作。如果不能,请以粗体(或其他颜色)显示该项目所适用的项目,以及右侧的说明文字,例如:

alt text

您绝对应该显示可以重新定位的项目总数,因为列表可能很长。

当然,这只是几种可能的变化之一。

6
Hisham

简单的答案是首先不要让用户犯错误。如果无法对所有选定的项目执行某项操作,则应禁用该操作,向用户说明为什么无法执行该操作并提出解决方案。

5
Antony Quinn

我认为大多数UI解决方案都是依赖于上下文的:适用于“删除”的解决方案可能不适用于“移动”,而适用于电子商务的解决方案可能不适用于工业工具。

就是说,抽象地讲,我可能会在您引用的“出现的框”中添加一个数字指示器,告诉用户类似的内容:“目标为29个项目,其中5个为锁定状态”,这样他就可以毫无问题地继续操作,或者通过单击“ 5锁定”部分来检查“警告项目”是什么。

无论如何,我都会避免任何“错误消息”:这是您的问题,而不是用户的问题。 ;)

5
Folletto

以下面的反例为基础-我想看到一个列表,其中弹出所有项目,指出仅特定项目将应用(命名)操作(且列表中标记不同的项目)-并提供“当然,前进”和“取消”操作。

重新显示类似的列表并不容易,但是为了向前发展,我认为这是我的第一选择。

Atleast不会像Microsoft Exchange 2010 Console那样执行此操作-它会为不支持该操作的所有项目(在一个不可调整大小的模态弹出窗口中列出一长串)引发错误,并且也不会将其应用于支持它的项目(原文如此)。除了完全取消构想并挖掘Powershell,或者尝试交叉引用小型模式错误对话框以手动逐个手动取消选择有问题的项外,没有其他方法可以避免这种情况。^^

3
Oskar Duveborn

我已经看到了几种处理这种情况的方法,但都不令人满意:

  • 无声拒绝多选。例如,CorelDraw通过不允许用户多选择可编辑和不可编辑(“锁定”)对象的混合来避免该问题,即使只是查看只读信息也是如此。同样,IronCAD不允许您多选某些特定类别的对象(例如摄像机和零件)。对我来说,这似乎是不必要的限制。

  • 无声拒绝命令。 Windows XP如果尝试为多个不同类别的项目(例如,我的电脑和pdf文件)打开属性窗口,只会忽略您,这可能会令人困惑和沮丧。

在我看来,您想通过允许对任何内容进行多选来为用户提供最大的灵活性,并在选择的内容上尽可能多地执行操作。同时,您不想像Oskar Duveborn在此页面上所述用消息框淹没用户。

如果用户犯了一个错误,这是有争议的:也许他们想对Command X应用到的整个窗口中分散分布的所有对象提交Command X,并且完全知道它不适用于某些对象。因此,他们键入Ctrl-A并选择CommandX。支持该“技巧”将非常方便。或者,也许他们已经选择了一堆东西来应用Command X,然后再应用CommandY。如果他们不必在命令之间重新进行多次选择或调整多次选择以排除不符合条件的对象,这将很有帮助。不适用。

这里有一些想法:

  • 首先,尝试在主/父窗口中指示相关信息,以便用户可以猜测某些操作不会影响某些选定对象。例如,为只读对象赋予独特的外观,也许只是在选择时才出现(我在想象CAD型应用程序的句柄带有小的挂锁)。每一类对象都应具有独特的外观,也许可以通过为每个对象标记一个特定的图标来实现。这样,当用户多选时,他们可以预测哪些命令可以执行,哪些命令没有任何意义(例如,该项目是一个摄像头,因此可以移动但显然无法调整大小)。

  • 如果应用程序在打开对话框之前无法确定适用于什么的内容,则可以更改不对其执行操作的对象的选择外观。例如,当用户更改属性值时,所有缺少该属性的对象都会在父窗口上具有“辅助”选择外观。

  • 如果执行动作的标准不明确,则可能需要一些文字提示。调用该动作的按钮的菜单项可能在其标题中包括它影响多少个项目或影响什么(例如,“仅钣金”)。在“属性”框中,可以在属性列旁边包括一列,该列表示每个属性适用于或可以更改的许多项目。

  • 这可能会占用太多空间,但是也许您只需要指出只影响某些对象(而不是确切的数字,标识或比例)。在这种情况下,也许您可​​以在对话框中使用脚注。创建一个表示“部分”的符号,也许是一个半圆。 (不要使用星号-常常表示“必需”)。将此符号置于影响选择的子集的任何控件中。在对话框底部,显示带有文字“ =”的符号仅适用于某些选定的项目。”对于不使用对话框的操作,请在菜单项或命令按钮标题中使用相同的符号,包括说明其含义的工具提示。

  • 理想情况下,您应该指示该操作仅在用户提交该操作之前部分适用,但作为备用,您可以在该操作之后提供一些反馈。通常,您希望在父窗口的对象中使任何操作的效果在视觉上可见,这可能就足够了。但是,如果您仍然担心用户感到困惑(例如,被滚动到视线之外的对象后来发现它们没有被更改),那么也许您可以提供一个无模式的文本通知(自动关闭),该通知显示“完成动作后,[已选择[m]个项目中的[已执行] [n]个”。如果用户不明白原因,也许可以提供一个帮助链接。

我不知道其中的任何一个实际上如何工作,因此最好测试一下您对用户的决定。

1
Michael Zuschlag

简单的答案是首先不要让用户犯错误。如果无法对所有选定的项目执行某项操作,则应禁用该操作,向用户说明为什么无法执行该操作并提出解决方案。

1
Antony Quinn

作为一个现实世界的例子,吉拉浮现在脑海。它显示了隐藏动作的至少一个可能的缺点:当人们没有意识到某项动作不可用时,这可能会令人沮丧。您无法移动已解决的问题,但起初我并不知道。经过漫长而艰苦的搜索,我才确定为什么以前以这种方式提出问题时,为什么突然没有采取行动。

因此,我认为毯子躲藏不是最好的方法。您可以标记并非所有人都可以使用的操作,最好是说明为什么标记了这些操作。我认为,如果您允许人们随意选择它,并让他们适用于“可用的人”,它可能会很好地工作。如果没有,我认为禁用这些项目比隐藏它们更好。 (另一方面,需要注意的是,不要以冗长的动作列表结尾。)

1
Inca

为什么不执行许多集成开发环境的属性/对象检查器的操作:仅显示表单上所有选定对象共有的属性?

在您的方案中:仅提供所有选定项目支持的批量操作。并使用每个选中/取消选中的项目更新所有批量操作的可用性(启用外观)与非可用性(禁用外观)。这样,用户将获得反馈,并快速选择在哪些项目上可以使用哪些批量操作(以及哪些项目具有哪些批量操作是相同的)。

1
Marjan Venema

该问题本身提供的第二个解决方案似乎效果最好:

仅在所有选定项都支持该操作时才启用该操作。

您可以将其显示为已禁用,并在其旁边或在工具提示中显示说明,以使用户知道为何禁用此操作。

我认为,允许用户执行仅影响部分选择的操作可能会造成很大的混乱,甚至在事实可能不起作用之后或之前通知用户,因为用户不阅读文本

因此,任何警告或解释都可能不会阻止用户仅单击按钮,然后立即关闭通知对话框。

话虽如此,这取决于操作和应用程序-操作是否触发对象的生命周期更改,影响其状态等。我将强制执行“仅当所有选定项都支持它时才允许操作”。对于非关键任务的东西,您可能更喜欢流量而不是准确性。

1
Dan Barak

我会将该操作应用于接受它的项目,然后剩下的。我认为用户足够聪明知道该操作无法应用于其他项目。

如果您对界面的其余部分进行了设置,以使用户可以直接理解这一点,那么应该没问题,您可以将其他项目保留在没有特殊提示的情况下。

例如,这也是在Gmail中完成的方式。接收两条消息,一条未读和一条读,选择两者,然后选择标记为已读。未读消息将被标记为已读,而已读消息不会更改。界面的其余部分(粗体文本和其他背景颜色)清楚表明已读取读取的消息。

(Gmail甚至说有2条消息被标记为已读,这似乎有些奇怪,但是还可以。)

1
Lode

我的方法:

让用户选择所需的项目,让用户选择所需的操作(如果至少一个项目可能受到该操作的影响),并且在执行该操作后返回一条信息消息:“ x,y,z项目不支持*行动是因为*主题。”

过滤可以应用于至少一个选定项目的动作可能有些棘手。

0
Bobby Tables

我会做类似的事情:发布一条消息,指出并非所有项目都可以删除/编辑/移动/等。并有一个列表,其实体随后定义了字段值。或者,如果他们不多,则有临时工。用列表顶部的n/a项重新排序,突出显示。

0
Billy