Chr*_*isW 5 validation user-interface gridview input data-entry
一个UI问题:对于最好的(定义为"最终用户最喜欢的那个")或实现数据输入网格的最差方法,是否存在一些共识?
我有一个网格,有很多行.网格列包含各种类型的属性,用户可以输入/编辑这些属性.属性的"类型"包括:
"自由文本"类型并不难设计(所以我不会问这个),但接下来的两种类型呢?
数字数字
枚举值
为了使用鼠标输入或编辑枚举值,我想在鼠标点击时弹出一个小的上下文菜单就可以了.
<select>输入控件(即组合框).我想尽管拥有一整套组合框并不像拥有一列文本值那样容易阅读(因为组合框添加了额外的非文字墨水)?您如何看待通常显示纯文本,但在字段获取输入焦点时使用组合框替换该文本(然后在模糊时删除组合框)?例如?
我也有兴趣看到你认为是一个典范的例子.我对桌面UI和/或浏览器内的答案感兴趣.
编辑:关注[data-entry]标签的另一个问题(" 有人使用Sigma Grid(基于Javascript的可编辑数据网格)吗? "),我正在查看Sigma Grid示例.它做了很多很好的事情IMO(对键盘和即时选择框的良好支持); 但是它对数字字段的支持可能是不完美的,例如,如果我在数字单元格中按"a",那么有时它会弹出一个警告框告诉我我错了(可能工具提示可能不那么干扰),和/或有时它将单元格留空(空白),擦除'a'并且不留任何东西.
编辑以回复以下答案之一.
但是,再次确定表单的主要用途是什么,并针对此进行优化.数据可视化或分析具有与批量输入不同的需求,并且令人满意的键盘用户与键盘+鼠标用户完全不同.
我希望相同的显示(即表格/网格)能够很好地显示现有属性,创建新属性和编辑现有属性.我期待几十个项目(即数十行数据),每个项目只有几列(例如,一列文本/项目描述,以及一个或多个列,用于一个或多个关联项目属性).
一些数据/属性可能是主观的和相对的(例如,每个项目的两个属性是每个项目的'优先级'或'难度',这仅在与其他项目比较时才特别有意义),这是我想要的原因在一个屏幕上一起显示所有数据:以便最终用户可以比较它们.
我的应用程序是针对相对专家(不是新手)的计算机用户,而不是数据输入专家:例如,用户是软件开发人员,项目经理,产品经理,QA人员等,但在某种程度上也是他们的客户; 它在内联网(不是公共互联网)上运行,但是易于使用且易于使用且易于学习和直观学习都非常重要.
此外,我不明白为什么令人满意的键盘用户与键盘+鼠标用户完全不同:我认为单个解决方案可以/应该支持和/或两者兼而有之.
恕我直言,您需要问的一个大问题是页面的主要目的以及用户的相对复杂程度。您是否正在与 Tab+10 键专业人士、鼠标点击+狩猎打字员打交道,或者两者兼而有之?
您做出的选择需要考虑到这一点。我假设通过选择网格,您的用户是从底部向上迈出的一步,并使用选项卡导航作为导航表单的主要方式,并且主要用途是批量数据输入。
关于数字输入:
关于枚举值:
额外评论:
然而,再次确定表单的主要用途是什么,并对其进行优化。数据可视化或分析与批量输入有不同的需求,满足键盘用户与键盘+鼠标用户完全不同。
编辑:回复评论
另外,我不明白为什么满足键盘用户与键盘+鼠标用户完全不同:我认为单个解决方案可以/应该支持其中一个和/或两者。
这并不完全不同。将其视为“优化”和“支持”大部分用户之间的区别。举几个例子:代码编辑器针对键盘用户进行了优化。在热键、快捷方式和键盘导航之间,用户很少需要使用鼠标。大多数 RTS 游戏都是使用单手操作鼠标、另一只手操作键盘的方式进行操作。他们通常支持专门使用鼠标,但并未对此进行优化。ITunes 则处于另一个极端——它几乎完全依赖鼠标(就像大多数以拖放为主的 UI 一样),仅使用键盘几乎是不可能的。
是否允许输入并显示错误;或者阻止输入并显示错误?当它是网格(一个单元格,表格内的某个位置)时,将其显示为“内联”是什么意思?
我不确定你正在哪个平台上构建,但是是的,我的意思是表内的某个地方,最好是在你正在谈论的数据行上。在 ASP.NET 的 GridView 中,允许使用 TemplateFields,它允许您将多个控件嵌入到同一个“单元格”中。在富客户端世界中,大多数第 3 方组件都提供对类似 OOTB 的支持(例如 IDataErrorInfo),这会在上下文中提供错误。
如果替代方案是将所有错误放在网格上方或下方,则用户将很难找出数十行数据中的哪一行存在错误。有关对此进行次优处理的示例,请尝试将 10 件商品添加到亚马逊购物车,然后将所有金额更改为 2,但 1 件商品除外,您将其更改为 -1。点击更新并查看是否可以轻松导航到有错误的行。
此外,验证风格的“流行”风格是允许用户输入数据并在不正确时向他们提供消息,而不会阻止输入和/或删除他们的输入。StackOverflow 在很多地方都这样做,最容易通过添加评论来证明。验证会通知您至少需要 15 个字符,但在通知您时不会删除您的评论。紧随其后的是让用户明确地知道他们的输入是不正确的。一个例子是尝试在 Windows 中重命名带有反斜杠的文件。您会立即看到一个带有精确说明的气球。
嗯,智能感知或自动完成是一种弹出窗口,但它可以使用键盘进行操作(不会夺走焦点)。
如果您可以像 Visual Studio 中的 Intellisense 一样清晰地支持弹出窗口,我会建议您继续使用。我对弹出窗口的非 VS 经验是,大多数尝试都失败了(有些非常可怕,要求我拿起鼠标并重新聚焦到正确的位置)。使用 Intellisense 需要记住的另一件事是,它具有出色的语句结束处理(我的意思是与您键入的单词的交互 + 前瞻 + 拼写/大小写宽恕 + tab/enter 处理)。由于我假设您正在使用选项卡在字段之间导航(请注意,VS 没有字段),您将不得不找出另一种方法来让您的应用程序知道“我现在完成了,转到自动” -完整/智能感知我刚刚输入的内容”
我认为组合框围绕文本的框架使文本更难快速阅读;也许一些带有向下箭头但组合框周围没有框架(只是表格单元格的边框)的最小组合框对于没有焦点的单元格会更好:尽管我想知道为什么即使是向下箭头也可能对于没有焦点的单元格很有用。
如果您担心 ComboBox 的框架,我完全同意 - 将框架颜色更改为对比度较低的颜色。任何在未聚焦时最小化控件“chrome”的解决方案显然都会使其更像文本,并且(可能?)更具可读性。
无论如何,祝您的设计好运。