Flex DataGrid itemEditEnd事件+ preventDefault函数

时间:2011-01-13 01:08:24

标签: flex datagrid

我正在使用flex的datagrid。

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

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

我对这种方法的问题是我找不到一种方法来阻止赋值给fixedValue属性(它不存在)。并且在itemEditEnd处理程序中使用event.preventDefault()会阻止其他事件发生,例如将行从编辑模式更改为视图模式。

我的问题是,如果有其他方法可以实现相同的目的,或者只是阻止分配“dataField”数据。

感谢

我正在使用dataField来识别我正在编辑的列。保留null可能不是一种选择。

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

1 个答案:

答案 0 :(得分:0)

不要使用itemEditEnd.It最好在数据提供者的网格上使用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>