AdvancedDatagrid Итерация по каждой строке открытого листа / дерева - PullRequest
0 голосов
/ 20 января 2012

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

Например, мой ADG выглядит так:

+ Science
- Math
  - Passed
     John Doe    |  A+  |  Section C
     Amy Rourke  |  B-  |  Section B
  - Failed
     Jane Doe    |  F   |  Section D
     Mike Cones  |  F   |  Section D
- English
  + Passed
  + Failed
- History
  + Passed
  - Failed
     Lori Pea    |   F  |  Section C

Я попытался использовать следующий код для получения открытых узлов:

var o:Object = new Object();
o = IHierarchicalCollectionView(myADG.dataProvider).openNodes;

Но для проверки объекта выполните следующий код:

Alert.show(ObjectUtil.toString(o), 'object inpsection');

Дает мне:

(Object)#0
  Math (2)
    children = (mx.collections::ArrayCollection)#2
      filterFunction = (null)
      length = 2
      list = (mx.collections::ArrayList)#3
        length = 2
        source = (Array)#4
          [0] (Object)#5
            children = (mx.collections::ArrayCollection)#6
              filterFunction = (null)
              length = 2
              list = (mx.collections::ArrayList)#7
                length = 2
                source = (Array)#8
                  [0] <Table>
    <Name>John Doe</Name>
    <Grade>A+</Grade>
    <Section>Section C</Section>
</Table>
                  [1] <Table> 
    <Name>Amy Rourke</Name>
    <Grade>B-</Grade>
    <Section>Section B</Section>
....
...
..

По сути, мне просто нужно создать объект, массив или xmllist, который бы дал мне:

Math    |   Passed  |   John Doe    |   A+  |   Section C
Math    |   Passed  |   Amy Rourke  |   B-  |   Section B
Math    |   Failed  |   Jane Doe    |   F   |   Section D
Math    |   Failed  |   Mike Cones  |   F   |   Section D
History |   Failed  |   Lori Pea    |   F   |   Section C

Любое предложение будет высоко оценено. Спасибо

1 Ответ

0 голосов
/ 20 января 2012

У вас должна быть возможность перебирать свойства объекта openNodes, и для каждого из них захватывать коллекцию и объединять значения в новый массив, а затем использовать его как источник другого типа коллекции, если это необходимо.Примерно так:

var newArray:Array = [];
for(var property:String in o)
{
    newArray = newArray.concat(o[property][0].source); //Passed, property is subject as in Math
    newArray = newArray.concat(o[property][1].source); //Failed property is subject as in Math
}

Единственная реальная проблема в том, что вы пытаетесь сохранить математику и пройти или потерпеть неудачу в объектах, в противном случае вышеприведенное должно работать.Чтобы эта другая часть работала, я думаю, вам нужно разбить каждое из приведенных выше утверждений на собственный цикл, который перебирает исходный код объекта openNodes и помещает правильные значения в новый созданный вами объект Value, имеющий тему и проходили не установлен на него.Затем вы также можете сохранить эти значения, также обратите внимание, что я предполагаю, что сбой прохода всегда организован таким образом в исходной структуре данных, где в каждом предмете у вас будет два массива, а первый будет проходить, а затем сбой.

...