【问题标题】:Flex AdvancedDatagrid populating with groupingCollection based on xmlFlex AdvancedDatagrid 填充基于 xml 的 groupingCollection
【发布时间】:2010-10-20 07:05:06
【问题描述】:

我目前正在尝试使用从带有id="produktMatrix_data"HTTPService 接收的 xml 填充 flex 3 AdvancedDatagrid。布局如下:http://pastebin.com/NqFqgj86 结果应如下所示: 其他行(如 KID、M.. 等)将由其他来源填充​​、硬编码或由用户输入填充,超出了此问题的范围。 我的 AdvencedDataGrid 代码如下:

<mx:AdvancedDataGrid dataProvider="{matrixProvider}">  
<mx:columns> 
    <mx:AdvancedDataGridColumn headerText="Zielprodukt" dataField="prod_txt" editable="false" >            
    </mx:AdvancedDataGridColumn>                        
    <mx:AdvancedDataGridColumn headerText="KID" dataField="kid" editable="true" editorDataField="selectedItem" >
    </mx:AdvancedDataGridColumn>
    <mx:AdvancedDataGridColumn headerText="MVLZ-Bezug" dataField="mvlz_bez" >
    </mx:AdvancedDataGridColumn>
    <mx:AdvancedDataGridColumn headerText="MVLZ-Dauer" dataField="mvlz_dauer">
    </mx:AdvancedDataGridColumn>
    <mx:AdvancedDataGridColumn headerText="MVLZ-Einheit" dataField="mvlz_einheit">
    </mx:AdvancedDataGridColumn>
    <mx:AdvancedDataGridColumn headerText="Status" dataField="status" editable="true">
    </mx:AdvancedDataGridColumn>
    <mx:AdvancedDataGridColumn headerText="Prämierung" dataField="praemie" editable="true">
    </mx:AdvancedDataGridColumn>
    <mx:AdvancedDataGridColumn headerText="Gültig ab" dataField="datum_ab" editable="true">
    </mx:AdvancedDataGridColumn>
    <mx:AdvancedDataGridColumn headerText="Gültig bis" dataField="datum_bis" editable="true">
    </mx:AdvancedDataGridColumn>
</mx:columns>

dataProvider 已编码:

    <mx:GroupingCollection id="matrixProvider" source="{produktMatrix_data.lastResult.result.pos.entry}" childrenField="undefined">
    <mx:Grouping>
        <mx:GroupingField name="portfolio"/>
        <mx:GroupingField name="layer"/>
        <mx:GroupingField name="cluster"/>
        <mx:GroupingField name="prod_txt"/>
    </mx:Grouping>
</mx:GroupingCollection>

但这不会填充 AdvancedDataGrid。那么,我该如何调整我的代码才能使其正常工作呢?还是我应该选择完全不同的方法?

【问题讨论】:

    标签: xml apache-flex advanceddatagrid groupingcollection


    【解决方案1】:

    在 livedocs 网站上有一个很好的例子:

    http://livedocs.adobe.com/flex/3/html/help.html?content=advdatagrid_08.html

    基本上,它让您将 groupingcollection 放入数据网格中,(复制/粘贴)如下所示:

    <mx:AdvancedDataGrid id="myADG" 
            width="100%" height="100%" 
            initialize="gc.refresh();">        
            <mx:dataProvider>
                <mx:GroupingCollection id="gc" source="{dpFlat}">
                        <mx:Grouping>
                            <mx:GroupingField name="Region"/>
                            <mx:GroupingField name="Territory"/>
                        </mx:Grouping>
                </mx:GroupingCollection>
            </mx:dataProvider>        
    
            <mx:columns>
                <mx:AdvancedDataGridColumn dataField="Region"/>
                <mx:AdvancedDataGridColumn dataField="Territory"/>
                <mx:AdvancedDataGridColumn dataField="Territory_Rep"
                    headerText="Territory Rep"/>
                <mx:AdvancedDataGridColumn dataField="Actual"/>
                <mx:AdvancedDataGridColumn dataField="Estimate"/>
            </mx:columns>
       </mx:AdvancedDataGrid>
    

    【讨论】:

    • 我必须将 matrixProvider.refresh() 添加到调用 produktMatrix_data.send() 的函数中。现在它起作用了。一开始我以为分组集合是建在dataProvider里面还是通过databinding使用都没有关系。
    • 使用分组集合时,您必须通过刷新来更新 dataProvider,否则大多数 dataprovider 会按预期运行,只需更新它们就会更新它们绑定的任何内容。高级数据网格不是我最好的朋友。
    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 2010-12-15
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多