`
yr512656630
  • 浏览: 321140 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

AdvancedDataGrid自定义排序

    博客分类:
  • flex
 
阅读更多
AdvancedDataGrid自定义排序问题之前在DataGrid写了一个排序方法

public function sortList(colName:String,sortType:String):void{
var sortField:SortField;  
this.colName = colName;
if(sortType=="desc"){  
sortField = new SortField(colName);
sortField.descending = true;
}
if(sortType=="asc"){
sortField = new SortField(colName);
sortField.descending = false;
}  
var sort:Sort = new Sort();  
sort.fields = [sortField];

dpFlat.sort = sort;
dpFlat.refresh();
}


很好用,但是在AdvancedDataGrid中,这个方法就不好使了。
我的想法是,在AdvancedDataGrid中,不打乱分组,然后对某一列进行排序,应该如何实现?

----------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 
    <mx:Script>  
        <![CDATA[
            import mx.controls.DateField;
            import mx.events.AdvancedDataGridEvent;
            import mx.collections.Sort;
            import mx.collections.SortField;
            import mx.utils.ObjectUtil;   
            import mx.collections.ArrayCollection;  
            import mx.collections.Grouping;
            import mx.collections.GroupingCollection;
            import mx.collections.GroupingField;
            import mx.controls.Alert;
             //include "SimpleFlatData.as" 
             [Bindable]
             public var dpFlat:ArrayCollection = new ArrayCollection([ 
              {Name:"name", Region:"Southwest", Territory:"Northern California", Territory_Rep:"T.R. Smith", Actual:55498, Estimate:50000}, 
              {Name:"name", Region:"Southwest", Territory:"Southern California", Territory_Rep:"Alice Treu", Actual:44985, Estimate:8000}, 
              {Name:"name", Region:"Southwest", Territory:"Arizona", Territory_Rep:"Barbara Jennings", Actual:38865, Estimate:40000},
              {Name:"name", Region:"Southwest", Territory:"Abc", Territory_Rep:"Dana Binn", Actual:29885, Estimate:20000},
              {Name:"name", Region:"Southwest", Territory:"Central California",  Territory_Rep:"Joe Smith", Actual:29134, Estimate:30000}, 
              {Name:"name", Region:"Southwest", Territory:"evada", Territory_Rep:"Bethany Pittman", Actual:52888, Estimate:45000}, 
              {Name:"name", Region:"Southwest", Territory:"Northern California", Territory_Rep:"Lauren Ipsum", Actual:38805, Estimate:40000},
              {Name:"name", Region:"Southwest", Territory:"Srthern California", Territory_Rep:"Bauren Ipsum", Actual:38805, Estimate:40000}, 
               {Name:"name", Region:"Southwest", Territory:"Vrthern California", Territory_Rep:"Fauren Ipsum", Actual:38805, Estimate:40000}, 
              {Name:"name", Region:"Southwest", Territory:"Southern California", Territory_Rep:"Jane Grove", Actual:44913, Estimate:9000}]);
            
        public function numericCompareFunc(itemA:int, itemB:int):int 
        {
            return ObjectUtil.numericCompare(itemA, itemB);
        }
        public function stringCompareFunc(itemA:String, itemB:String):int 
        {
            return ObjectUtil.stringCompare(itemA, itemB);
        }
       public function myCompare(a:Object, b:Object, fields:Array=null):int
        {
            var result:int = 0;
            var i:int = 0;
            var propList:Array = ["Estimate","Territory"];
            var len:int = propList.length;
            var propName:String;
            while (result == 0 && (i < len))
            {
                propName = propList[i];
                if (propName == "Estimate") {
                    result = numericCompareFunc(a[propName], b[propName]);
                } else {
                    result = stringCompareFunc(a[propName], b[propName]);
                }
                i++;
            }
            return result;
        }
        public function sortTerritory():void
        {
             gc.grouping.compareFunction = myCompare;
             gc.refresh();
        }
      ]]>
    </mx:Script> 
    <mx:GroupingCollection id="gc" source="{dpFlat}" >
        <mx:Grouping >
            <mx:GroupingField id="gf" name="Estimate" caseInsensitive="true" />
        </mx:Grouping>
    </mx:GroupingCollection>
    <mx:AdvancedDataGrid id="myADG"  width="100%" height="100%" 
        dataProvider="{gc}"
        initialize="{gc.refresh()}"
        displayItemsExpanded="true"
        creationComplete="{myADG.expandAll()}" 
        defaultLeafIcon="{null}"
        folderOpenIcon="{null}"
        folderClosedIcon="{null}">
        <mx:groupedColumns>
            <mx:AdvancedDataGridColumn dataField="Region"/>
            <mx:AdvancedDataGridColumn dataField="Territory" />
            <mx:AdvancedDataGridColumn dataField="Territory_Rep" headerText="Territory Rep" sortable="false"/>
            <mx:AdvancedDataGridColumn dataField="Actual" visible="false" />
            <mx:AdvancedDataGridColumn dataField="Estimate" sortable="false"/>
        </mx:groupedColumns>
    </mx:AdvancedDataGrid>
    <mx:Button label="按Territory排序" click="sortTerritory()"/>
</mx:Application>



注意,在GroupingCollection中,要让arrayCollation itemUpdate有作用,一定需要加上gc.refresh()
分享到:
评论

相关推荐

    AdvancedDataGrid综合应用

    通过设置`sortCompareFunction`,我们可以自定义排序逻辑。 4. **自定义布局和样式** AdvancedDataGrid提供了丰富的样式选项,允许开发者通过CSS或MXML进行定制。通过使用`gridLines`、`headerStyleName`等属性,...

    Flex应用AdvancedDataGrid表头皮肤

    它提供了比基本DataGrid更丰富的功能,如多级表头、排序、分组、过滤和自定义渲染等。本文将深入探讨Flex应用中的AdvancedDataGrid表头皮肤设计与实现。 AdvancedDataGrid的表头皮肤是用户界面的重要组成部分,它...

    Flex技术中AdvancedDataGrid使用方法

    以上介绍了一些关于`AdvancedDataGrid`的基础用法,包括多列排序、自定义行和列样式、显示分层数据以及创建多列分组。这些特性极大地增强了`AdvancedDataGrid`在数据展示方面的灵活性和功能性。

    表格演示(1)AdvancedDataGrid应用

    同时,AdvancedDataGrid还允许自定义分组头部的显示,可以创建自定义的GroupHeaderRenderer来改变默认样式。 在高级特性中,AdvancedDataGrid的Drag-and-Drop功能使得用户能自由地调整数据项的位置,这对于需要动态...

    flex-datagrid-advancedDataGrid-demo

    AdvancedDataGrid不仅具备DataGrid的所有功能,还增加了对多级表头、分组、折叠展开、拖放排序等功能的支持。它能够处理嵌套数据集,并允许自定义列的展开和折叠行为,提供了一种更高效的方式来展示和操作复杂数据。...

    flex 使用AdvancedDataGrid组件的课件管理系统

    AdvancedDataGrid相比于普通的DataGrid,提供了更多的功能和自定义选项,如: 1. 多级分组:可以对数据进行多级分类和分组,使数据结构更加清晰。 2. 复杂排序:支持对列进行多种排序方式,包括升序、降序以及多个...

    SparkTree_AdvancedDataGrid

    AdvancedDataGrid是Spark组件库中的一个高级数据网格组件,它提供了更丰富的数据展示和操作功能,比如分组、排序、过滤等。 在Spark-Tree-FlexSDK4.5.zip中,包含了该项目所需的源码、配置文件和库资源。`....

    FLEX AdvancedDataGrid 复选框

    它提供了高级的数据呈现功能,比如分组、排序、过滤和自定义渲染。本文将深入探讨“FLEX AdvancedDataGrid 复选框”这一主题,主要基于提供的文件`AdvancedDataGridGroupItemRendererEx.as`。 在AdvancedDataGrid中...

    DataGrid和AdvancedDataGrid CheckBox全选功能1.1

    AdvancedDataGrid则是DataGrid的增强版,提供了更丰富的数据显示和排序、分组等功能,适合处理大量复杂数据。 全选功能通常涉及到两个主要部分:主CheckBox控件和DataGrid/AdvancedDataGrid中的数据项。当主...

    Flex dataGrid 自定义显示列

    过滤功能通常需要编写自定义代码来实现,而分组则可以通过`grouping`属性和`AdvancedDataGrid`的`groupingEnabled`属性来开启。 总的来说,Flex DataGrid的自定义显示列是通过灵活的列配置、自定义渲染器以及数据...

    flex AdvancedDataGrid实现checkBox全选功能

    在Flex开发中,AdvancedDataGrid是一款强大的数据网格组件,它提供了丰富的数据展示和交互功能,如排序、分组、过滤等。在实际应用中,我们经常需要为用户提供选择多条数据的能力,这时CheckBox的选择功能就显得尤为...

    DataGrid和AdvancedDataGrid CheckBox全选功能

    `DataGrid`是基础版本,适合简单的数据展示,而`AdvancedDataGrid`则增加了更多的高级特性,如分层视图、多列排序、拖放功能等,更适合处理复杂的数据结构。在这些组件中实现CheckBox全选功能对于用户操作大量数据时...

    AdvancedDataGrid 对sdk3.5不支持,对3.2支持方案(合并单元格)

    在Flex开发中,AdvancedDataGrid组件是一个强大的数据网格控件,它提供了丰富的功能,如分组、排序、过滤以及自定义列渲染等。然而,针对Adobe Flex SDK 3.5版本,AdvancedDataGrid存在一些兼容性问题,这使得在该...

    flex advancedDataGrid 中如何实现带checkbox的树

    如果需要对数据进行分组或排序,可以利用AdvancedDataGrid的`groupField`和`sortField`属性。`GroupAdvancedDataGrid`可能是项目中一个专门用于分组展示的组件,但具体实现要看代码。 综上所述,实现Flex ...

    AdvancedDataGrid多表头与树形表格(数据统计)

    AdvancedDataGrid是Flex中一个功能强大的组件,它允许用户以复杂的方式展示大量数据,包括分组、排序、过滤和自定义列布局。 首先,我们要理解什么是多表头。在数据展示中,多表头是指在表格中拥有多个层次的列标题...

    Flex中DataGrid和其它控件使用

    6. **Sort功能**:DataGrid支持单击列头进行排序,可以自定义排序逻辑。在AdvancedDataGrid中,还可以设置多级排序。 7. **Filtering**:为用户提供筛选功能可以提高数据浏览效率,DataGrid支持基本的过滤器,而...

    Flex中AdvancedDataGrid的用法示例介绍

    在Flex开发中,AdvancedDataGrid组件是一个常用的显示表格数据的组件,其功能比基础的DataGrid组件更为强大,支持更加复杂的数据显示需求,例如显示多层表头、支持拖拽排序等。在某些情况下,当需要展示具有复杂数据...

    Flex中让鼠标移至AdvancedDataGrid的行上不自动修改显示效果

    相较于mx:Repeater,AdvancedDataGrid在处理大数据集时提供了更好的性能和用户体验,包括分页、排序、过滤等功能。然而,它的一个默认行为是当鼠标悬停在某一行上时,会自动改变行的显示效果,比如更改背景色或高亮...

Global site tag (gtag.js) - Google Analytics