Flex AdvancedDataGrid HierarchicalData XML приводит к появлению нежелательных строк - PullRequest
0 голосов
/ 31 марта 2011

Полагаю, лучший способ объяснить мою проблему - описать ее в терминах примера иерархических XML-данных в Livedocs .

Здесь XML имеет вид

<Region Region="Arizona">
    <Territory_Rep Territory_Rep="Barbara Jennings" Actual="38865" Estimate="40000"/>
    <Territory_Rep Territory_Rep="Dana Binn" Actual="29885" Estimate="30000"/>
</Region>

Однако данные, которые у меня есть, больше похожи на:

<Region Region="Arizona">
    <Territory_Rep Territory_Rep="Barbara Jennings">
        <Actual>38865</Actual>
        <Estimate>40000</Estimate>
    </Territory_Rep>
    <Territory_Rep Territory_Rep="Dana Binn">
        <Actual>29885</Actual>
        <Estimate>30000</Estimate>
    </Territory_Rep>
</Region>

И я бы программно создал столбцы так:

var cols:Array = [];

var adgColumn:AdvancedDataGridColumn = new AdvancedDataGridColumn();
adgColumn.headerText = "Rep Name";
adgColumn.dataField  = "@Territory_Rep";
cols.push(adgColumn);

adgColumn = new AdvancedDataGridColumn();
adgColumn.headerText = "Actual";
adgColumn.dataField  = "Actual";
cols.push(adgColumn);

adgColumn = new AdvancedDataGridColumn();
adgColumn.headerText = "Estimate";
adgColumn.dataField  = "Estimate";
cols.push(adgColumn);

grid.columns = cols;    
grid.validateNow();

Однако это приведет к тому, что представители будут отображаться как узлы ветвей (то есть папки) с некоторыми пустыми конечными узлами внизу. Это явно не то, что я хочу - мне нужно, чтобы он выглядел так же, как в примере.

Очевидно, что я мог бы решить эту проблему, написав некоторый код - самый простой способ - изменить XML (будь то в исходном коде или с помощью анализатора в моем приложении Flex) или проанализировать его, а затем вместо этого сбросить требуемые данные в ArrayCollection. , но нет ли способа заставить это работать из коробки? Учитывая, что я дал указание AdvancedDataGrid использовать все дочерние элементы в одной строке, почему он не может игнорировать их с точки зрения иерархии?

Поскольку у AdvancedDataGrid, похоже, есть несколько других раздражающих проблем (например, вопрос 3517769 ), лучше ли мне просто создавать собственный класс, который выполняет все, что я хочу? Или есть какие-то достойные обходные пути, о которых я не знаю?

Приветствие.

1 Ответ

0 голосов
/ 31 марта 2011

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

<Region Region="Arizona">
    <Territory_Rep Territory_Rep="Barbara Jennings" NonHierarchial="true">
        <Actual>38865</Actual>
        <Estimate>40000</Estimate>
    </Territory_Rep>
    <Territory_Rep Territory_Rep="Dana Binn" NonHierarchial="true">
        <Actual>29885</Actual>
        <Estimate>30000</Estimate>
    </Territory_Rep>
</Region>

и переопределение метода синтаксического анализа AdvancedDataGrid для поиска этого свойства.

Редактировать: вы можете обойти эту игру с такими свойствами, как childrenField в HierarchicalData объекте, покопайтесь в документации немного! Смотри: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/collections/HierarchicalData.html#childrenField

...