2011-01-13 9 views
1

フレックスのDataGridで作業しています。フレックスDataGrid itemEditEndイベント+ preventDefault関数

次のように定義されたDataGridColumnがあります。ここでlabelFunctionを使用するとカスタムテキストを表示できます。

グリッドでitemEditEndハンドラを使用して、この列の入力データを操作しています。目的は、ユーザーの入力を受け取り、それを分割し、結果を "fixedValue"以外の異なるプロパティに格納することです。

このアプローチの私の問題は、(存在しない)fixedValueプロパティへの代入を防ぐ方法を見つけることができないということです。また、itemEditEndハンドラでevent.preventDefault()を使用すると、行を編集モードから表示モードに変更するような他のイベントが発生しなくなります。

私の質問は、同じことを達成するための他の方法がある場合、または単に "dataField"データの割り当てを防ぐ方法がある場合です。

ありがとう

私は編集中の列を識別するためにdataFieldを使用しています。それをnullのままにすると、オプションにならない場合があります。

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

答えて

0

いけ変更した値と、ユーザが入力した値を格納するための別の列をそのまま保つことができているitemEditEnd.ItはあなたがitemEditEndを使用したいあなたgrid.If用データプロバイダでてCollectionEventを使用する方がよいWUD使用columnFixedCurrency.Iに私は多くの列とで動作するような特性を持っている場合、何が起こったのか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を使用して、2列に1列にユーザーが入力した.theの値が半分に分布している例を作成しました1つのフィールド編集では、私はすべての操作をもう一度やり直す必要があります。ガードのどの列が編集されたのか、またはselectedItemのどのプロパティが編集されたのかを知る方法はありますか? – Eatdoku

関連する問題