具有数组集合的Flex树控件

时间:2012-04-09 10:10:38

标签: xml flex tree arraycollection

我一直在努力奋斗几个小时!我真的需要帮助

我尝试使用通过arraycollection引入的外部xml文件填充树控件但我需要将xml数据分组以显示在树中

好的,我的外部xml文件名为parts.xml,它看起来像这样:

<NewDataSet>
    <Parts>
        <PartGroup>51 Series</PartGroup>
        <PartType>20051</PartType>
        <PartNumber>20051-3</PartNumber>
        <PartDesc>Reusable Socket-51 SER</PartDesc>
        <PartImageFile />
    </Parts>
    <Parts>
        <PartGroup>51 Series</PartGroup>
        <PartType>20051</PartType>
        <PartNumber>20051-4</PartNumber>
        <PartDesc>Reusable Socket-51 SER</PartDesc>
        <PartImageFile />
    </Parts>
    <Parts>
        <PartGroup>51 Series</PartGroup>
        <PartType>20151</PartType>
        <PartNumber>20151-12-12</PartNumber>
        <PartDesc>Penis</PartDesc>
        <PartImageFile>20151-vi copy.jpg</PartImageFile>
    </Parts>
    <Parts>
        <PartGroup>90 Series</PartGroup>
        <PartType>090</PartType>
        <PartNumber>090-20B</PartNumber>
        <PartDesc>Replace Ferrule-90 SER</PartDesc>
        <PartImageFile>090 copy.jpg</PartImageFile>
    </Parts>
    <Parts>
        <PartGroup>90 Series</PartGroup>
        <PartType>090</PartType>
        <PartNumber>090-4B</PartNumber>
        <PartDesc>Replace Ferrule-90 SER</PartDesc>
        <PartImageFile>090 copy.jpg</PartImageFile>
    </Parts>
    <Parts>
        <PartGroup>90 Series</PartGroup>
        <PartType>20090</PartType>
        <PartNumber>20090-12</PartNumber>
        <PartDesc>Replacement Socket-FA</PartDesc>
        <PartImageFile>20090-vi copy.jpg</PartImageFile>
    </Parts>
    <Parts>
        <PartGroup>90 Series</PartGroup>
        <PartType>20090</PartType>
        <PartNumber>20090-12C</PartNumber>
        <PartDesc>Replacement Socket-FA, SS</PartDesc>
        <PartImageFile>20090-vi copy.jpg</PartImageFile>
    </Parts>
</NewDataSet>

这只是一个样本(实际的xml是7591行)..

接下来使用

<mx:HTTPService id="getPartsXml" url="assets/db/Parts_DB.xml" result="partsDB=getPFDXml.lastResult.NewDataSet.Parts"/>

让xml进入flex。 partsDB是一个已绑定到树控件的数组集合。

我遇到的问题是让树以我需要的方式显示数据,而不会丢失任何其他数据。

我的意思是,从上面的xml我需要树像这样显示

+-51 series
|  +->20051
|  |  |->20051-3
|  |  |->20051-4
|  |
|  +->20151
|     |->20151-12-12
|
+-90 Series
   +->090
   |  |->090-20B
   |  |->090-4B
   |
   +->20090
      |->20090-12
      |->20090-12C

另外我打算让用户拥有巨大的零件树,他们在partnumber级别选择一个节点,然后将其拖放到datagrid,其中显示零件的所有其他标签。

我尝试过很多没有运气的事情。即使现在我想也许如果我循环通过数组 - 并为树创建一个新的数组,让它显示我需要它的方式,然后当用户将一个部分拖放到网格上时,我会有代码会在原始的arraycollection中寻找那个部件号,并将它添加到一个新的数组只是为了数据网格...我仍然不知道我将如何为树创建新的数组!!因为xml数据按部件组分组,然后在获得单个部件号之前再按parttype分组:(

我希望这是有道理的

1 个答案:

答案 0 :(得分:0)

你有2个组件。 第一个(树)没有正确地填充数据:

  1. 树期待层次数据。您的XML数据是扁平的(但在Array Collection中)。将其与GroupingCollection2分组。
  2. 或者使用AdvancedDataGrid来模拟像this这样的树控件。
  3. 关于datagrid,您最有可能使用自己的集合,但使用第一个组件集合中的对象:

    1. 双击/拖放从1到2导致插入到2的集合中(检查它是否已经存在)
    2. 你可能需要包括一种从2中移除的方法,或者你将拥有一个总是填充并且永远无法清除的组件。