2011-01-13 3 views
1

메신저는 flex의 DataGrid를 사용하고 있습니다.플렉스 DataGrid itemEditEnd 이벤트 + preventDefault 함수

labelFunction을 사용하면 사용자 지정 텍스트를 표시 할 수있는 DataGridColumn이 다음과 같이 정의되어 있습니다.

또한이 열에 입력 된 데이터를 조작하기 위해 그리드에서 itemEditEnd 핸들러를 사용하고 있습니다. 그 목적은 사용자 입력을 받아서 그것을 나눈 다음 "fixedValue"가 아닌 다른 속성에 결과를 저장하는 것입니다.

내 접근 방식이 내 문제는 내가 존재하지 않는 fixedValue 속성에 할당을 방지하는 방법을 찾을 수 없다는 것입니다. itemEditEnd 핸들러에서 event.preventDefault()를 사용하면 편집 모드에서보기 모드로 행을 변경하는 것과 같은 다른 이벤트가 발생하지 않습니다.

내 질문에 다른 방법이 같은 일을 달성하거나 그냥 "dataField"데이터의 할당을 방지하는 방법입니다.

감사합니다.

저는 편집중인 열을 식별하기 위해 dataField를 사용하고 있습니다. null로두면 옵션이 아닐 수도 있습니다.

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

답변

0

망가 itemEditEnd.It이 grid.If 당신이 변경된 값과 사용자가 입력 한 값을 저장하는 경우 itemEditEnd 별도의 열이 사용하려는 유지 그대로 수의 dataProvider의에이 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를 사용하여, 두 개의 열 한 열에서 사용자가 입력 한 국지적 인 값이 반으로 배포되는 예를 생성 , 한 번의 필드 편집으로 모든 조작을 다시해야합니다. gird에서 어떤 열을 편집했는지 또는 selectedItem의 어떤 속성을 편집했는지 알 수있는 방법이 있습니까? – Eatdoku

관련 문제