单独验证DataGridColumn单元格

时间:2010-06-18 16:16:09

标签: actionscript-3 validation flex datagrid

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

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

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

编写 Validator 很容易;并访问数据提供者对象。

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

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


修改

答案:

  1. 验证和显示失效标记但不是每个单元格的一种方法是验证所有数据提供程序对象,然后在整个网格上设置 errorString

  2. 验证每个单元格的一种方法是在 itemEditEnd 事件处理程序上。 (请参阅这些页面A B C D)。一个缺点是它只允许从“内部”访问单元格,而不是在命令中验证网格的动作。

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

  4. 请参阅下面的Richard Haven的答案。

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

3 个答案:

答案 0 :(得分:2)

BigResource的

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

答案 1 :(得分:1)

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

我认为更好的选择是为您的DataGridColumn提供自定义itemRenderer。您可以编写此类来接受验证器并更新其外观,并且有a bunch of great tutorials左右。

答案 2 :(得分:1)

如果您正在寻找任意验证(例如,在按钮或页面导航上)而不是立即导航(例如在单元格退出或编辑结束时),那么基础中的数据 数据提供程序。我会在那里进行验证,而不是在网格内部进行挖掘。

您可以向数据项添加标记,以便项呈示器将其显示为错误(或use an external list标记它)。

干杯