Actionscript 3 检查Spark数据网格单元';内容以编程方式?

Actionscript 3 检查Spark数据网格单元';内容以编程方式?,actionscript-3,flash,apache-flex,flex4,flex-spark,Actionscript 3,Flash,Apache Flex,Flex4,Flex Spark,我第一次使用Spark DataGrid,发现它通常非常有用。现在我已经画好了,我想对我的网格的内容做些什么,我有点困惑于如何继续 我想创建一个函数,它运行在DataGrid中某列的每个单元格中,根据预定义值数组检查每个值;如果找到匹配项,则应通过改变颜色,突出显示冲突单元格 我知道,通过使用getItemRenderRat()函数并传递列和行索引,可以访问特定单元格的项目呈现器。但我看不出如何循环遍历每列中的值 我很可能在这件事上做错了,在这种情况下,请随意把我推上正确的道路。同样地,如果有可

我第一次使用Spark DataGrid,发现它通常非常有用。现在我已经画好了,我想对我的网格的内容做些什么,我有点困惑于如何继续

我想创建一个函数,它运行在DataGrid中某列的每个单元格中,根据预定义值数组检查每个值;如果找到匹配项,则应通过改变颜色,突出显示冲突单元格

我知道,通过使用
getItemRenderRat()
函数并传递列和行索引,可以访问特定单元格的项目呈现器。但我看不出如何循环遍历每列中的值

我很可能在这件事上做错了,在这种情况下,请随意把我推上正确的道路。同样地,如果有可能做到我想做的事情,我很想知道如何做到


谢谢

实际上,您应该创建自己的
,并将其用作dataGrid的itemRenderer

这样,您就可以根据
数据属性更改单元格的颜色

下面是一个示例,说明了如何做到这一点:

<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx = "http://ns.adobe.com/mxml/2009" 
   xmlns:s = "library://ns.adobe.com/flex/spark" 
   xmlns:mx = "library://ns.adobe.com/flex/mx" >

    <fx:Script>
        <![CDATA[
        private function isValid(value:uint):Boolean
        {
            //whatever;
            return true;
        }

        ]]>
    </fx:Script>

    <s:BorderContainer width="100%" height="100%">
        <s:borderStroke>
            <s:SolidColorStroke color="{isValid(data)?#00FF00:#FF0000}" />
        </s:borderStroke>
        <s:UITextField label="{data}" />
    </s:BorderContainer>

</s:GridItemRenderer>

使用上述示例,还可以在每次更改数据时覆盖“设置数据”以更改颜色,而不仅仅是在网格创建时

<?xml version="1.0" encoding="utf-8"?>
<s:GridItemRenderer xmlns:fx = "http://ns.adobe.com/mxml/2009" 
                xmlns:s = "library://ns.adobe.com/flex/spark" 
                xmlns:mx = "library://ns.adobe.com/flex/mx"  >

<fx:Script>
    <![CDATA[
        import mx.controls.ColorPicker;
        import mx.events.FlexEvent;
        import mx.utils.ColorUtil;

        override public function set data(value:Object):void{
            super.data = value;

            if(data.different == 1){
                solidColor.color = 255;
            }
        }

    ]]>
</fx:Script>

<s:BorderContainer width="100%" height="100%">
    <s:borderStroke>
        <s:SolidColorStroke   id="solidColor" />
    </s:borderStroke>
    <s:UITextFieldGridItemRenderer label="{data.name}" />
</s:BorderContainer>
</s:GridItemRenderer>


接下来的步骤很简单,从datagrid克隆您的dataProvider,然后比较两者,如果项目发生更改,只需将“1”设置为,例如,上面示例中的标志“不同”,然后itemRenderer将调用自身并自动更改de color

非常感谢,这使我走上了正确的道路:)我研究了在Flash Builder中使用自动组件创建来创建GridItemRenderer,并设法做了一些类似于您建议的事情。非常感谢,非常感谢!非常感谢,这也有帮助。很高兴能从另一个角度来理解我是如何做到这一点的。