Flex AdvancedDataGrid HierarchicalData XML приводит к появлению нежелательных строк
Я думаю, что лучший способ объяснить мою проблему - это описать ее в терминах примера иерархических 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 ответ
Я думаю, что такое поведение имеет смысл так же эффективно, как и у вас другой уровень иерархии, структурируя ваш 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