我在Flex 4中有一个数据网格,其中一个NumericStepper作为数值的编辑器。我可以为NumericStepper设置预定义的最大值和最小值,但我需要能够为DataGrid中的每一行设置不同的限制。我怎样才能做到这一点?
这是datagrid的代码:
<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 minimum="0" maximum="50" stepSize="1" width="35" height="20"></mx:NumericStepper>
</fx:Component>
</mx:itemEditor>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
编辑: 根据Flextras的回答,我已将NumericStepper行更改为
<mx:NumericStepper minimum="{data.minNo}" maximum="{data.maxNo}" stepSize="1" width="35" height="20"></mx:NumericStepper>
但是现在当我点击单元格来更改值时,我得到了StackOverflowError。我在这里发布了一个新问题:StackOverflowError on DataGrid row specific limits in a NumericStepper
答案 0 :(得分:2)
Te DataGrid仅为屏幕上显示的内容创建行。它不会为dataProvider中的每个项创建行。这称为渲染器回收,由于性能原因而完成。
我建议您尝试根据数据对象的元素指定NumericStepper的最大值和最小值,而不是基于行的位置。基本上,这样的事情:
<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 minimum="{data['min']}" maximum="data['max']}" stepSize="1" width="35" height="20"></mx:NumericStepper>
</fx:Component>
</mx:itemEditor>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>