Как сделать ширину столбцов привязываемой в двух Flex AdvancedDataGrids? - PullRequest
0 голосов
/ 03 апреля 2009

Потерпи меня здесь. У меня есть странная настройка, чтобы выполнить то, что мне нужно. У меня в основном есть AdvancedDataGrid, который отображает данные, возвращаемые WebService. Данные в формате XML:

<children label="parent 1" value="3100">
    <children label="child 1" value="1100">
        <children label="grandchild 1" value="200">
        </children>
        <children label="grandchild 2" value="300">
        </children>
        <children label="grandchild 3" value="600">
        </children>
    </children>
    <children label="child 2" value="2000">
        <children label="grandchild 4" value="1200">
        </children>
        <children label="grandchild 5" value="800">
        </children>
    </children>
</children>
<children label="parent 2" value="1000">
    <children label="child 3" value="1000">
        <children label="grandchild 6" value="300">
        </children>
        <children label="grandchild 7" value="700">
        </children>
    </children>
</children>

Я преобразую XML в объект HierarchicalData в обработчике результатов WebService. Я также динамически создаю столбцы для AdvancedDataGrid, поскольку он используется для отображения различных столбцов в зависимости от ввода пользователя. Однако мне также необходимо отобразить итоговую «строку» внизу AdvancedDataGrid. Я не могу понять, как преобразовать мою коллекцию XMLListCollection в коллекцию GroupingCollection и, таким образом, таким образом создать строку итогов, поэтому я фактически вычисляю итоги в WebService и возвращаю это как узел в XML:

<totals value="4100" />

Я использую эти «итоговые» данные, чтобы заполнить вторую AdvancedDataGrid без заголовков, которая находится непосредственно под первым ADG, так что он «выглядит» как «последняя строка» первого ADG. Оба ADG используют один и тот же связываемый столбец Array:

<mx:AdvancedDataGrid id="reportADG" dataProvider="{__model.reportData}"
    columns="{__model.adgDrillColumns}" width="100%" height="100%" />

<mx:AdvancedDataGrid id="reportTotalsADG" 
    dataProvider="{__model.reportTotalsData}" 
    folderOpenIcon="{null}" folderClosedIcon="{null}" 
    disclosureClosedIcon="{null}" disclosureOpenIcon="{null}" 
    defaultLeafIcon="{null}" showHeaders="false" 
    selectable="false" rowCount="1" 
    columns="{__model.adgColumns}" width="100%" />

Однако, если столбцы изменяются в первом ADG, я не могу найти способ изменить размер столбцов во втором ADG. Что я могу сделать?

1 Ответ

1 голос
/ 18 сентября 2009

Вы можете использовать метод строки сводки или создать пользовательский компонент для отдельного отображения итогов. В моем случае мне пришлось создать пользовательский компонент, который получает все столбцы ADG, определяет их ширину, рисует вертикальные линии / разделители, а затем суммирует все строки и показывает метку. Это хорошо, потому что он используется так:

<components:DataGridSummaryFooter id="summaryView"
     height="6%" width="100%"
     totalsColumns="{[impressionsCol, estimatedSpendingCol]}"
     dataSource="{dataViewSource}" 
/>

... а остальное волшебство!

К вашему сведению, причина, по которой я должен был создать отдельный компонент и не использовать итоговую строку, была вызвана требованиями к дизайну этого приложения. На самом деле, я хотел бы надеяться, что это всегда так, потому что со строками сводки вы должны прокручивать всю страницу до конца сетки, чтобы увидеть сводки, и это не очень хороший UX.

Я надеюсь, что в какой-то момент это кому-то поможет! :)

Приветствия

...