对于DataGrid的排序今天研究了一个下午,找了不少资料,终于找到了解决方案。发现DataGridColumn的属性sortCompareFunction和sortDescending是点击列头后的排序方式,而要确定默认情况下的排序方式是无效的。可以这样实现:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.collections.SortField;
import mx.collections.Sort;
import mx.utils.ObjectUtil;
import mx.collections.ArrayCollection;
[Bindable]
private var adg:ArrayCollection = new ArrayCollection([{name:"张三华",age:15,sex:"男"},
{name:"李四国",age:45,sex:"男"},
{name:"王七花",age:24,sex:"女"},
{name:"赵华柳",age:17,sex:"女"},
{name:"田三华",age:33,sex:"男"},]);
private function init():void{
adg.sort = new Sort();
adg.sort.fields = [new SortField("age",false,true)];
adg.refresh();
dg.dataProvider = adg;
}
private function sortRanges(obj1:Object,obj2:Object):int{
var value1:Number = obj1.age;
var value2:Number = obj2.age;
if(value1 > value2 ){
return 1;
}else if(value1 < value2 ){
return -1;
}else{
return 0;
}
}
private function dataFilter():void{
if(adg.filterFunction == null){
adg.filterFunction = dataFilter2;
}
adg.refresh();
}
private function dataFilter2(item:Object):Boolean{
var bool:Boolean = true;
var it:String = item["name"];
var filter:String = ti.text;
if(!it || it.toLowerCase().indexOf(filter.toLowerCase()) < 0){
bool = false;
}
return bool;
}
private function sortCompare(obj1:Object,obj2:Object):int{
return ObjectUtil.numericCompare(obj1.age,obj2.age);
}
]]>
</mx:Script>
<mx:DataGrid id="dg" x="89" y="46" width="552" height="160">
<mx:columns>
<mx:DataGridColumn headerText="name" dataField="name"/>
<mx:DataGridColumn headerText="age" dataField="age"/>
<mx:DataGridColumn headerText="sex" dataField="sex" />
</mx:columns>
</mx:DataGrid>
<mx:Form>
<mx:FormItem>
<mx:TextInput id="ti" change="dataFilter()"/>
</mx:FormItem>
</mx:Form>
</mx:Application>
重点是黑体字部分,SortField第一个参数是排序的字段,第二个参数用来确定是否区分大小写,第三个参数表示是否按降序排列。
分享到:
相关推荐
4. **自定义表头分组行为**:如果需要自定义分组的展开/折叠行为,或者更改默认的分组排序,可以通过监听`grouping`事件和设置`groupSortOrder`属性来实现。例如,可以添加一个事件监听器来改变默认的展开状态: ``...
在Flex开发中,DataGrid组件是一个非常常用的控件,它用于展示数据集合,并提供交互式操作,如排序、选择等。本示例聚焦于DataGrid中的CheckBox集成,特别是实现一个全选的功能。以下是对这个主题的详细解释: 一、...
1. **DataGrid组件**:DataGrid是Flex中用于展示结构化数据的组件,它可以显示多列数据,并支持排序、选择和编辑等功能。在创建DataGrid时,我们需要指定数据源(通常是ArrayCollection或XMLListCollection)。 2. ...
默认情况下,DataGrid并不支持直接的排序操作,但我们可以添加自定义排序功能。 在Flex中,我们可以通过监听DataGrid的headerRelease事件来实现排序。当用户点击列头时,这个事件会被触发。在事件处理函数中,我们...
Flex DataGrid是一款基于Adobe Flex技术的数据展示控件,它允许开发者在Web应用中展示大量数据并进行高效管理。在描述中提到的“flex datagrid pagination”是指DataGrid控件的一个重要特性——分页功能。在处理大...
当用户点击表头时,阻止默认的排序行为(因为我们只是处理全选操作,而不是排序),并将`selected`状态同步到所有行的checkbox。 3. `CheckBoxItemRenderer` 类: 这个类同样继承自`CheckBox`,用于渲染行中的...
默认情况下,DataGrid根据数据提供者的数据类型进行升序或降序排序。 4. **选择和编辑** DataGrid支持行和单元格的选择,通过设置allowMultipleSelection属性来控制。同时,DataGrid可以配置为可编辑,通过...
然而,有时我们可能需要对DataGrid的默认排序功能进行自定义,以满足特定的业务需求。本教程将详细讲解如何在Flex中创建一个自定义排序的DataGrid控件。 首先,我们需要了解Flex DataGrid的基本结构。DataGrid控件...
2. 鼠标双击可编辑:在默认情况下,Flex DataGrid的单元格是只读的。为了实现鼠标双击编辑,我们需要监听GridEvent.DOUBLE_CLICK事件,并在事件触发时开启相应的单元格或行的编辑模式。这可能涉及到设置...
标题中的“自己写的分页 flex datagrid 及一些其他东西 flexbuilder 项目源文件”表明这是一个使用Adobe Flex Builder开发的项目,重点在于自定义的分页功能和数据网格(datagrid)组件。Flex是Adobe推出的一种用于...
在Flex中,DataGrid组件允许开发者以表格形式展示数据,并且可以实现诸如排序、分页、选择项等功能。然而,有时候默认的DataGrid功能可能无法满足特定项目的需求,这时就需要对其进行定制。例如,我们可能需要改变其...
在Flex中,`dataGrid`的排序通常通过`sortField`和`sortOrder`属性或`sort`方法来实现。然而,这些默认的排序机制并不适用于中文字符,因为它们基于Unicode编码,而不是中文的字典顺序。为了解决这个问题,我们需要...
- Flex中的DataGrid默认只支持单选或全选,但通过自定义实现,可以扩展到三状态多选。这通常涉及到监听`itemClick`事件,维护一个记录选中状态的数组,并更新ItemRenderer的视觉反馈。 - 用户可以通过复选框或者...
DataGrid是Flex框架中用于展示表格数据的常用组件,它提供了丰富的数据绑定、排序、筛选等功能。但是,Flex原生的DataGrid并不直接支持带有复选框的列,因此开发者通常需要自定义组件来实现这一功能。 ### ...
在Flex开发中,数据网格(DataGrid)是用于展示大量结构化数据的组件,它允许用户进行交互式浏览和操作。ActionScript是Flex的核心编程语言,用于实现动态功能和交互。在标题和描述中提到的知识点主要涉及Flex ...
在Flex开发中,DataGrid是常用的数据显示控件,它能够以表格的形式展示大量数据,并提供了丰富的功能,如排序、分页、筛选等。本篇文章将深入探讨Flex中的DataGrid及其与其他控件的协同使用。 首先,DataGrid的核心...
Datagrid是MX组件库中的一个控件,它允许我们显示二维的数据集合,并支持排序、分页和选择功能。默认情况下,Datagrid会按照预设的样式显示每一行,但我们可以自定义样式来满足特殊需求。 要动态改变行颜色,主要...
然而,DataGrid默认的功能可能无法满足所有应用的需求,因此我们需要对其进行自定义以添加特定的功能,如复选框和分页。 1. **复选功能**:要在DataGrid中实现复选功能,我们通常需要创建一个自定义的ItemRenderer...
DataGrid组件能够显示大量的数据,并且还支持各种交互功能,如排序、过滤和选择等。 在处理表格数据时,有时需要将多个单元格显示为一个合并后的单元格,这称为“合并单元格”。合并单元格可以有效地展示数据,避免...
首先,Flex DataGrid是一种用于展示数据集合的强大组件,它提供了丰富的自定义选项,如列排序、分页和过滤。然而,原生的Flex DataGrid组件并不直接支持行合并,即在同一行中合并多个单元格,这对于显示具有层次结构...