对DataGrid中的NumericStepper的行特定限制

时间:2010-09-30 12:43:04

标签: flex

我在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

1 个答案:

答案 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>