Flex DataGrid в GridItemRenderer - PullRequest
       25

Flex DataGrid в GridItemRenderer

0 голосов
/ 21 июля 2011

У меня есть некоторые иерархические данные, которые я хотел бы показать в Flex Spark DataGrid, выглядящие примерно так:

|------|---------------------------|
| row1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|  in  | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| outer|---------------------------|
| grid | a component that spans    |
|      | over multiple columns here|
|----------------------------------|
| row2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|  in  | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| outer|---------------------------|
| grid | a component that spans    |
|      | over multiple columns here|
|----------------------------------|

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

<s:DataGrid dataProvider="{outerDataProvider}" width="100%" height="100%" variableRowHeight="true">
    <s:columns>
        <s:ArrayList>
            <s:GridColumn dataField="name">
                <s:itemRenderer>
                    <fx:Component>
                        <s:DefaultGridItemRenderer />
                    </fx:Component>
                </s:itemRenderer>
            </s:GridColumn>
            <s:GridColumn>
                <s:itemRenderer>
                    <fx:Component>
                        <s:GridItemRenderer>
                            <s:states>
                                <s:State name="normal" />
                                <s:State name="toggled" />
                            </s:states>
                            <s:layout>
                                <s:VerticalLayout />
                            </s:layout>
                            <s:HGroup>
                                <s:DataGrid dataProvider="{data.innerDataProvider}"  columns="{outerDocument.myDynamicGeneratedColumns}">
                                </s:DataGrid>
                                <s:Group>
                                    <s:ToggleButton label="Toggle" />
                                </s:Group>
                            </s:HGroup>

                            <MyComponent width="100%" height="50" includeIn="toggled" />
                        </s:GridItemRenderer>
                    </fx:Component>
                </s:itemRenderer>
            </s:GridColumn>
        </s:ArrayList>
    </s:columns>
</s:DataGrid>

У меня возникают серьезные проблемы с производительностью при добавлении внутренней DataGrid.Вертикальная прокрутка ужасно медленная.

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

Совершенно неправильно делать что-то подобное?Могу ли я использовать другой компонент, кроме DataGrid, для внутренней структуры Grid и получить лучшую производительность?

Сетка - это, в основном, сетка, содержащая изображения в зависимости от значений внутри каждой строки.

Есть предложения или ссылки на советы по DataGrid?

1 Ответ

1 голос
/ 21 июля 2011

Как насчет использования списка с TileLayout для внутренней сетки.Это определенно будет работать намного лучше:

    <s:List>
        <s:layout>
            <s:TileLayout/>
        </s:layout>
    </s:List>
...