0

在这里忍受我。我有一个奇怪的设置来完成我需要的东西。我基本上有一个 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>

我在 WebService 结果处理程序中将 XML 转换为 HierarchicalData 对象。我还为 AdvancedDataGrid 动态构建列,因为它用于根据用户输入显示不同的列。但是,我还需要在 AdvancedDataGrid 的底部显示总计“行”。我无法弄清楚如何将我的 XMLListCollection 转换为 GroupingCollection,从而以这种方式创建总计行,因此,我实际上计算了 WebService 中的总计并将其作为 XML 中的节点返回:

<totals value="4100" />

我使用这个“总计”数据填充第二个 AdvancedDataGrid,它没有位于第一个 ADG 正下方的标题,因此它“看起来”是第一个 ADG 的“最后一行”。两个 ADG 都使用相同的可绑定列数组:

<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 中的列也调整大小的方法。我能做些什么?

4

1 回答 1

1

您可以使用汇总行方法,也可以创建自定义组件以单独显示总计。就我而言,我必须创建一个自定义组件来获取所有 ADG 列,确定它们的宽度,绘制垂直线/分隔符,然后对所有行求和并显示一个标签。这很好,因为它是这样使用的:

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

......剩下的就是魔法!

仅供参考,我必须创建一个单独的组件而不使用摘要行的原因是由于此应用程序的设计要求。事实上,我希望一直这样做,因为对于摘要行,您必须一直滚动到网格底部才能看到摘要,这不是很好的 UX。

我希望这可以帮助某人在某些时候有所帮助!:)

干杯

于 2009-09-17T23:52:30.230 回答