Actionscript 3 TextInput作为spark datagrid中的ItemEditor,其中第三列值不应重复

Actionscript 3 TextInput作为spark datagrid中的ItemEditor,其中第三列值不应重复,actionscript-3,apache-flex,flex4,flex4.5,flex4.6,Actionscript 3,Apache Flex,Flex4,Flex4.5,Flex4.6,我的datagrid有3列,第三列有textinput itemEditor。当文本更改时,如果该文本与任何其他文本匹配(基本上文本是int)。弹出窗口应显示为重复。这是我写的代码,实际上工作不正常,我是flex新手,所以请不要介意我的代码是否奇怪 <s:GridItemEditor xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"

我的datagrid有3列,第三列有textinput itemEditor。当文本更改时,如果该文本与任何其他文本匹配(基本上文本是int)。弹出窗口应显示为重复。这是我写的代码,实际上工作不正常,我是flex新手,所以请不要介意我的代码是否奇怪

<s:GridItemEditor xmlns:fx="http://ns.adobe.com/mxml/2009" 
                  xmlns:s="library://ns.adobe.com/flex/spark" 
                  xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;

            override public function set data(value:Object):void
            {
                super.data = value;
                col3TextField.text = data.columnThree;
            }
            /*
            override public function set value(newValue:Object):void {
                col3TextField.text = newValue as String;
            }
            */

            override public function get value():Object {
                if (parseInt(col3TextField.text) == data.columnThree) {
                    return data[column.dataField];
                } 
                return  col3TextField.text;
            }

            override public function save():Boolean
            {
                if (parseInt(col3TextField.text) == data.columnThree) {



    Alert.show("Duplicate");
                    }
                }  
                data[column.dataField] = value;
                return  true;
            }       


        ]]>
    </fx:Script>
    <s:TextInput id="col3TextField" width="100%" color="red" restrict="0-9" maxChars="4"/>
</s:GridItemEditor>

<s:DataGrid x="139" y="340" width="300" height="300" dataProvider="{dgData}" editable="true" 
                >
        <s:columns>
            <s:ArrayList>
                <s:GridColumn dataField="columnOne" headerText="Data Col #1"  editable="false"/>
                <s:GridColumn dataField="columnTwo" headerText="Data Col #2" editable="false"/>
                <s:GridColumn dataField="columnThree" headerText="Data Col #3" itemEditor="custom.CustomItemEditor" >
                </s:GridColumn>
            </s:ArrayList>
        </s:columns>
    </s:DataGrid>

不要从ItemRenderer内部发送警报,而是发送一个ID为“ItemSaveEvent”的自定义事件,并在datagrid所在的位置处理业务逻辑,或者更好地在表示模型中处理业务逻辑

也就是说,小心你的平等检查。parseInt返回一个数字类型。你的数据是一个数字吗?如果是,请确保您想要:


请参阅ItemRenders中有关自定义事件的提示。

这个问题非常令人困惑;我不知道从哪里开始。“文本更改时”您指的是什么文本?项目编辑器中的文本?你指的是什么弹出窗口?弹出窗口与副本有什么关系?什么是复制品?据我所知,itemEditor的save函数从未调用过。您确定parseInt(col3TextField.text)正在返回值吗?