2011-01-13 48 views
1

即時通訊工作與flex的數據網格。Flex DataGrid itemEditEnd event + preventDefault function

我有一個DataGridColumn定義如下,其中labelFunction將允許我顯示自定義文本。

我也在網格上使用itemEditEnd處理程序來操縱輸入的數據爲此列。目的是獲取用戶輸入並分割它,然後將結果存儲在「fixedValue」以外的其他屬性中。

我用這種方法的問題是,我找不到防止分配給fixedValue屬性(不存在)的方法。並且在itemEditEnd處理程序中使用event.preventDefault()將阻止其他事件發生,如將行從編輯模式更改爲視圖模式。

我的問題是,如果有其他方式來實現相同的事情,或者一種方法來防止分配「dataField」數據。

謝謝

我正在使用dataField來識別我正在編輯的列。將它留空可能不是一個選項。

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

回答

0

不使用itemEditEnd.It WUD更好地使用CollectionEvent對數據提供程序爲您grid.If要使用發生itemEditEnd有一個單獨的列存儲改變值和用戶輸入的值可以保持不變在columnFixedCurrency.I創建了一個例子用戶在一列中輸入.the值分佈在半兩列,在ArrayCollection.HTH

  <?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> 
+0

發生了什麼事,如果我有很多欄目,並與工作性質使用collectionChange ,一次現場編輯會要求我重新做所有的操作。是否有辦法知道網格上的哪一列已被編輯或者selectedItem的哪些屬性已被編輯? – Eatdoku 2011-01-13 16:47:26