Apache flex Flex DataGrid itemEditEnd事件+preventDefault函数

Apache flex Flex DataGrid itemEditEnd事件+preventDefault函数,apache-flex,datagrid,Apache Flex,Datagrid,我正在使用flex的datagrid 我有一个DataGridColumn,定义如下,其中labelFunction允许我显示自定义文本 我还在网格上使用itemEditEnd处理程序来处理为此列输入的数据。其目的是获取用户输入并将其拆分,然后将结果存储在除fixedValue之外的不同属性中 这种方法的问题是,我找不到一种方法来阻止对不存在的fixedValue属性的赋值。在itemEditEnd处理程序中使用event.preventDefault可以阻止其他事件的发生,比如将行从编辑模式更

我正在使用flex的datagrid

我有一个DataGridColumn,定义如下,其中labelFunction允许我显示自定义文本

我还在网格上使用itemEditEnd处理程序来处理为此列输入的数据。其目的是获取用户输入并将其拆分,然后将结果存储在除fixedValue之外的不同属性中

这种方法的问题是,我找不到一种方法来阻止对不存在的fixedValue属性的赋值。在itemEditEnd处理程序中使用event.preventDefault可以阻止其他事件的发生,比如将行从编辑模式更改为查看模式

我的问题是,如果有其他方法来实现同样的事情,或者有一种方法来阻止数据字段数据的赋值

谢谢

我使用数据字段来标识我正在编辑的列。将其保留为空可能不是一个选项

<mx:DataGridColumn id="columnFixedCurrency" labelFunction="fixedCurrecy_labelFunc" dataField="fixedValue" headerText="Price"/>

不要使用itemEditEnd。最好在网格的数据提供程序上使用CollectionEvent。如果要使用itemEditEnd,请使用一个单独的列来存储更改的值,并且用户输入的值可以在columnFixedCurrency中保持不变。我创建了一个示例。用户在一列中输入的值在两列中分为一半列,使用ArrayCollection.HTH上的collectionChange

         <?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
    <![CDATA[
        import mx.events.CollectionEvent;
        import mx.controls.Alert;
        import mx.events.DataGridEvent;
        import mx.events.ListEvent;
        public function splitValues(event:CollectionEvent):void{
           if(dg !=null )
           {
            dg.selectedItem.splitValue1 = dg.selectedItem.fixedValue /2;
            dg.selectedItem.fixedValue = dg.selectedItem.fixedValue /2;

           }

        }
    ]]>
</mx:Script>




<mx:DataGrid id="dg"  editable="true" >
    <mx:columns>
        <mx:DataGridColumn dataField="splitValue1" headerText="Split Price1" id="columnSplitCurrency1" editable="false"/>
        <mx:DataGridColumn id="columnFixedCurrency"  dataField="fixedValue" headerText="Price"/> 

    </mx:columns>
     <mx:dataProvider>
       <mx:ArrayCollection id="myAC" collectionChange="splitValues(event)">
        <mx:Object splitValue1="0" fixedValue="25"  splitValue2="0"/>
        <mx:Object splitValue1="0" fixedValue="15" splitValue2="0"/>
        <mx:Object splitValue1="0" fixedValue="35" splitValue2="0" />
        <mx:Object splitValue1="0" fixedValue="45" splitValue2="0"/>
        <mx:Object splitValue1="0" fixedValue="65" splitValue2="0"/>
       </mx:ArrayCollection>
     </mx:dataProvider>
</mx:DataGrid></mx:Application>

如果我有许多列和属性要处理,一个字段编辑将需要我重新执行所有操作。有没有办法知道网格上的哪个列已被编辑,或者selectedItem的哪个属性已被编辑?