我正在使用flex的datagrid。
我有一个DataGridColumn定义如下,其中labelFunction允许我显示自定义文本。
我还在网格上使用itemEditEnd处理程序来操作此列的输入数据。目的是获取用户输入并将其拆分,然后将结果存储在“fixedValue”以外的其他属性中。
我对这种方法的问题是我找不到一种方法来阻止赋值给fixedValue属性(它不存在)。并且在itemEditEnd处理程序中使用event.preventDefault()会阻止其他事件发生,例如将行从编辑模式更改为视图模式。
我的问题是,如果有其他方法可以实现相同的目的,或者只是阻止分配“dataField”数据。
感谢
我正在使用dataField来识别我正在编辑的列。保留null可能不是一种选择。
<mx:DataGridColumn id="columnFixedCurrency" labelFunction="fixedCurrecy_labelFunc" dataField="fixedValue" headerText="Price"/>
答案 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>