分别验证 DataGridColumn 单元格

Posted

技术标签:

【中文标题】分别验证 DataGridColumn 单元格【英文标题】:Validate DataGridColumn cells individually 【发布时间】:2011-03-05 12:31:07 【问题描述】:

如何单独验证 DataGridColumn 中的单元格? (ActionScript 3.5) 根据给定行中的字段,为每个单元格配置验证。例如

FIELD               VALUE   TYPE
age                 13      Integer
height              13x3    Integer
registered          true    Boolean
temperature         98.G6   Float

在这种情况下,13x3 和 98.G6 当然是无效的。

编写一个验证器很容易;并访问数据提供者对象。

但是我如何获得对 GUI 单元对象的单独访问,以便我可以直接或通过 Validator 在单个单元上设置 errorString

itemRenderer/TextInput 控件出于性能原因在单元格中重复使用,因此访问 GUI 级对象很棘手。


编辑

答案:

    验证和显示无效标记的一种方法是验证所有数据提供者对象,然后在整个网格上设置 errorString

    验证每个单元格的一种方法是在 itemEditEnd 事件处理程序上。 (见这些页面ABCD)。一个缺点是它只允许从“内部”访问单元格,而不是通过命令验证网格的操作。

    自定义 itemRenderer 是另一种可能性,如下面的答案所示,但就像上面的 3 一样,它只允许从“内部”访问单元格,而不是在验证的操作中命令上的网格。

    请参阅下面 Richard Haven 的回答。

    这里是how to access the GUI objects:相关的GUI对象列表是一个受保护的字段;因此您可以通过子类化来访问它,然后遍历代表单元的 GUI 组件并在每个单元上设置 errorString

【问题讨论】:

【参考方案1】:

BigResource 的This website 询问如何访问单个单元格。第三篇文章回答了那里的问题,并提供了比这更好的资源的链接。认为你会想要两者。希望这会有所帮助。

【讨论】:

谢谢。您链接的网站似乎显示了如何访问给定单元格中的 data (您所指的“第三篇文章”是什么?),而我正在寻找一种方法来遍历 GUI 组件 代表单元格。请参阅我对上面问题的编辑,其中提供了一些链接。每次退出单元格时,Flex 似乎都会破坏 TextInput 或其他编辑器控件。我想验证何时按下 OK 按钮。无效单元格将获得通常用于验证的红色边框和错误工具提示。我应该注意,可以在给定坐标处获取 CellRenderer。 我应该注意到,在 fl.controls.DataGrid 中是可能的,但在 mx.Controls.DataGrid 中却不能在给定的行和列中获取 CellRenderer。【参考方案2】:

您确定要访问各个单元格的 DisplayObject 吗?该组件管理实例,以便它只创建需要显示的数量(这样庞大的数据集就不需要在屏幕上显示大量的 DisplayObject)。

我认为更好的选择是为您的 DataGridColumn 提供自定义 itemRenderer。你可以编写这个类来接受一个验证器并更新它的外观,这方面有a bunch of great tutorials。

【讨论】:

谢谢——但我想验证何时按下 DataGrid 的“外部”上的按钮,如下面的 MXML 示例所示。我确实知道如何从 DataGridEvent 处理程序的“内部”进行验证,可以选择使用自定义 itemRenderer,但是如果验证失败,我需要阻止关闭包含此代码的对话框。【参考方案3】:

如果您正在寻找任意验证(例如在按钮或页面导航上)而不是立即导航(例如在单元格退出或编辑结束时),那么数据 在底层数据提供者。我会在那里进行验证,而不是在网格内四处寻找。

您可以向数据项添加一个标志,以便项目渲染器将其显示为错误(或use an external list 进行标记)。

干杯

【讨论】:

当然,我们对 dataProvider 中的数据进行验证。问题是如何设置 GUI 元素,例如errorString。您对项目渲染器中的验证标志的想法很好,但仍然没有回答如何验证整个网格,例如网格外的“验证”按钮。当您有一个要关闭但必须在关闭时验证(根据需要阻止关闭)的对话框时,这一点很重要。

以上是关于分别验证 DataGridColumn 单元格的主要内容,如果未能解决你的问题,请参考以下文章

当同一行中的另一个单元格在 Javascript 中具有值时,验证一个单元格是不是成为必需的

如何根据图像自定义集合视图单元格

如何在#ag-grid for React 中执行单元格验证

如何验证 DataGridView 中单元格编辑控件的输入?

java poi 导出 excel时 ,合并单元格的问题

ag-grid-angular 和单元格验证