Специфичные для строки ограничения для NumericStepper в DataGrid - PullRequest
0 голосов
/ 30 сентября 2010

У меня есть сетка данных в Flex 4 с NumericStepper в качестве редактора для числового значения. Я могу установить предопределенные максимальные и минимальные значения для NumericStepper, но мне нужно иметь возможность иметь разные ограничения для каждой строки в 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>

Edit: Основываясь на ответе Flextras, я изменил строку NumericStepper на

<mx:NumericStepper minimum="{data.minNo}" maximum="{data.maxNo}" stepSize="1" width="35" height="20"></mx:NumericStepper>

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

1 Ответ

2 голосов
/ 30 сентября 2010

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...