代码之家  ›  专栏  ›  技术社区  ›  Pieter van Niekerk

Flex AdvancedDataGrid排序

  •  3
  • Pieter van Niekerk  · 技术社区  · 16 年前

    passed 指定客户是否有资格获得任何月度产品的字段。

    现在网格是按字母顺序排序客户数据,这是一件好事,但它不是排序每月的产品,不是那么好的事情。

    dataProvider看起来像这样(我是按资助者分组的。)

    {Funder:"Customer1", Product:"1 Month", Passed:"False"}, 
    {Funder:"Customer1", Product:"3 Month", Passed:"True"}, 
    {Funder:"Customer1", Product:"6 Month", Passed:"True"}, 
    {Funder:"Customer2", Product:"1 Month", Passed:"False"}, 
    {Funder:"Customer2", Product:"3 Month", Passed:"False"}, 
    {Funder:"Customer2", Product:"6 Month", Passed:"False"}
    

    我在网格中得到的结果是这样的

     ----------------------------------------
    | Funder & Products   |  Product Passed  |
     ----------------------------------------
    | Customer1           |                  |
    |    6 Month          |  True            |
    |    3 Month          |  True            |
    |    1 Month          |  False           |
    | Customer2           |                  |
    |    3 Month          |  False           |
    |    6 Month          |  False           |
    |    1 Month          |  False           |
     ----------------------------------------
    

    还有什么能帮你把产品分类的吗?

    编辑:

    <mx:AdvancedDataGrid id="myADG" 
                         width="100%" height="100%"
                         initialize="gc.refresh();"
                         folderClosedIcon="{null}"
                         folderOpenIcon="{null}"
                         defaultLeafIcon="{null}">
    
        <mx:dataProvider>
            <mx:GroupingCollection id="gc" source="{mCustomerData}">
                <mx:grouping>
                    <mx:Grouping>
                        <mx:GroupingField name="Funder"/>
                    </mx:Grouping>
                </mx:grouping>
            </mx:GroupingCollection>
        </mx:dataProvider>        
    
        <mx:columns>
            <mx:AdvancedDataGridColumn dataField="Product" 
                                       headerText="Funder &amp; Products"/>
            <mx:AdvancedDataGridColumn dataField="Passed"
                                       headerText="Product Passed"/>
            <mx:AdvancedDataGridColumn dataField="Passed"
                                       headerText="Product Failed"/>
        </mx:columns>
    </mx:AdvancedDataGrid>
    
    3 回复  |  直到 16 年前
        1
  •  3
  •   Pieter van Niekerk    16 年前

    好吧,我找到了一个适合我的解决方案。下面是。

    基本上,在 creationComplete 我称之为 sortData 执行以下操作的函数。

    private function sortData():void {
        var sort:Sort = new Sort();
        var sortField:SortField = new SortField("Product");
    
        sort.fields = [sortField];        // Set 'Product' as the field to be sorted on
        myADG.dataProvider.sort = sort;   // Add the sort to the dataProvider of the dataGrid
        gc.source.refresh();              // Refresh the GroupCollection
    }
    

    希望看到另一种方法来做这件事,因为我不能认为这是唯一的方法

        2
  •  1
  •   JeffryHouser    16 年前

    无论出于何种目的,网格都不会对数据进行排序。它只显示您按指定顺序提供的数据。dataProvider必须由您排序,网格将相应地更新。

    如果要通过单击列标题进行排序,请查看 sortCompareFunction 在AdvancedDataGridColumn上

    documentation 关于如何分类。

        3
  •  1
  •   Paddy    13 年前

    How to sort items within group in AdvancedDataGrid

    您可以编写一个比较函数并在分组字段上使用它。

    推荐文章