Событие Flex DataGrid itemEditEnd + функция protectDefault - PullRequest
1 голос
/ 13 января 2011

Я работаю с сеткой данных Flex.

У меня есть DataGridColumn, определенный следующим образом, где labelFunction позволит мне отображать пользовательский текст.

Я также использую обработчик itemEditEnd в сетке для манипулирования введенными данными для этого столбца. Цель состоит в том, чтобы взять пользовательский ввод и разделить его, а затем сохранить результат в других свойствах, кроме «fixedValue».

Моя проблема с этим подходом заключается в том, что я не могу найти способ предотвратить присвоение свойству fixedValue (которого не существует). А использование event.preventDefault () в обработчике itemEditEnd остановит другие события, такие как изменение строки из режима редактирования в режим просмотра.

Мой вопрос заключается в том, что если есть другой способ добиться того же или способ просто предотвратить присвоение данных «dataField».

спасибо

Я использую поле данных, чтобы определить столбец, который я редактирую. Оставить его нулевым, возможно, не вариант.

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

1 Ответ

0 голосов
/ 13 января 2011

Не используйте itemEditEnd. Было бы лучше использовать CollectionEvent на провайдере данных для вашей сетки. Если вы хотите использовать itemEditEnd, у вас есть отдельный столбец для хранения измененного значения, и значение, введенное пользователем, может быть сохранено в columnFixedCurrency без изменений.Я создал пример. Значение, введенное пользователем в одном столбце, распределяется пополам в двух столбцах, используя collectionChange для 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...