Ну, похоже, что привязка minimum
и maximum
к данным приводит к бесконечному циклу. Однако вам не нужно связывать, чтобы изменить эти два значения для каждой строки в вашей DataGrid. Переопределение сеттера для data
поможет. Смотрите следующий пример:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
xmlns:local="*">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
private var dp:ArrayCollection = new ArrayCollection([
{name: "Name 1", antal: 1, minNo: 1, maxNo: 5},
{name: "Name 2", antal: 2, minNo: 1, maxNo: 6},
{name: "Name 3", antal: 3, minNo: 1, maxNo: 7}
]);
]]>
</fx:Script>
<mx:DataGrid x="0" y="45" width="272" height="525" dataProvider="{dp}" variableRowHeight="true"
editable="true" id="equipmentDG" verticalAlign="middle">
<mx:columns>
<mx:DataGridColumn headerText="Benämning" headerStyleName="gridheader" fontSize="12"
width="128" dataField="name" editable="false"/>
<mx:DataGridColumn headerText="Antal" headerStyleName="gridheader" width="40"
dataField="antal" editorDataField="value" editable="true">
<mx:itemEditor>
<fx:Component>
<mx:NumericStepper stepSize="1" width="35" height="20">
<fx:Script>
<![CDATA[
override public function set data(value:Object):void
{
super.data = value;
if (value && value.hasOwnProperty("minNo"))
minimum = value.minNo;
if (value && value.hasOwnProperty("maxNo"))
maximum = value.maxNo;
}
]]>
</fx:Script>
</mx:NumericStepper>
</fx:Component>
</mx:itemEditor>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
</s:Application>
Существуют явные проверки, существуют ли поля minNo
и maxNo
, поскольку каким-то образом метод вызова вызывается довольно часто и большую часть времени value
не является ожидаемым объектом ...