Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 分别验证DataGridColumn单元格_Actionscript 3_Validation_Apache Flex_Datagrid - Fatal编程技术网

Actionscript 3 分别验证DataGridColumn单元格

Actionscript 3 分别验证DataGridColumn单元格,actionscript-3,validation,apache-flex,datagrid,Actionscript 3,Validation,Apache Flex,Datagrid,如何分别验证DataGridColumn中的单元格?(ActionScript 3.5)根据给定行中的字段,为每个单元格配置验证。比如说 FIELD VALUE TYPE age 13 Integer height 13x3 Integer registered true Boolean temperature 98.G6 Float 在这种情况

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

FIELD               VALUE   TYPE
age                 13      Integer
height              13x3    Integer
registered          true    Boolean
temperature         98.G6   Float
在这种情况下,13x3和98.G6当然无效

编写验证器很容易;和访问数据提供程序对象

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

由于性能原因,itemRenderer/TextInput控件在单元间重复使用,因此访问GUI级别的对象很棘手


编辑

答复:

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

  • 验证每个单元格的一种方法是使用itemEditEnd事件处理程序。(见以下几页)。一个缺点是,它只允许从“内部”访问单元,而不允许在验证grid on命令的操作中访问单元

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

  • 见下面Richard Haven的答案

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


  • at BigResource询问如何访问单个单元格。第三篇文章回答了这个问题,并提供了一个链接,指向比这个更好的资源。我想你两个都想要。希望这能有所帮助

    是否确实要访问各个单元格的显示对象?该组件管理实例,以便只创建需要显示的实例(这样巨大的数据集就不需要在屏幕上显示大量的DisplayObjects)


    我认为更好的选择是为DataGridColumn提供一个自定义的。你可以编写这个类来接受验证器并更新它的外观,这是可以理解的。

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

    您可以向数据项添加标志,以便项渲染器将其显示为错误(或将其标记)


    干杯

    谢谢。您链接的网站似乎显示了如何访问给定单元格中的数据(您提到的“第三篇文章”是什么?),而我正在寻找一种方法来迭代表示单元格的GUI组件。请参阅我对上述问题的编辑,其中提供了一些链接。每次退出单元格时,Flex似乎都会破坏TextInput或其他编辑器控件。我想确认按下OK按钮的时间。无效单元格将获得红色边框和用于验证的常见错误工具提示。我应该注意,可以在给定的坐标处获取CellRenderer。我应该注意,可以在fl.controls.DataGrid中获取CellRenderer,但不能在mx.controls.DataGrid中获取给定行和列的CellRenderer。谢谢——但我想验证在按下数据网格“外部”的按钮时,如下面的MXML示例中所示。我确实知道如何从DataGridEvent处理程序的“内部”进行验证,可以选择使用自定义itemRenderer,但如果验证失败,我需要阻止关闭包含此代码的对话框。当然,我们对dataProvider中的数据进行验证。问题是如何设置GUI元素,例如errorString。您对项目呈现器中的验证标志的想法是好的,但仍然没有回答如何从网格外的“验证”按钮验证整个网格。当您有一个要关闭但必须在关闭时验证的对话框(根据需要阻止关闭)时,这一点很重要。