我有一个datagrid,填充如下所示.当用户单击列标题时,我想使用词典排序对行进行排序,其中首先使用所选列,然后以从左到右的顺序使用其余列来打破任何关系.我该如何编码呢?

(我有一个答案,我将在下面发布,但它有一个问题 – 如果有人能提供更好的答案,我会很激动!)

这是布局:

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="absolute" creationComplete="onCreationComplete()">

    <mx:Script source="GridCode.as" />

    <mx:DataGrid id="theGrid" x="61" y="55" width="466" height="317">
        <mx:columns>
            <mx:DataGridColumn datafield="A"/>
            <mx:DataGridColumn datafield="B"/>
            <mx:DataGridColumn datafield="C"/>
        </mx:columns>
    </mx:DataGrid>

</mx:Application>

这是支持代码:

import mx.collections.ArrayCollection;
import mx.collections.sort;
import mx.collections.sortField;
import mx.controls.dataGridClasses.DataGridColumn;
import mx.events.DataGridEvent;

public function onCreationComplete():void
{
    var ar:ArrayCollection = new ArrayCollection();
    var ob:Object;
    for( var i:int=0; i<20; i++ )
    {
        ob = new Object();
        ob["A"] = i;
        ob["B"] = i%3;
        ob["C"] = i%5;
        ar.addItem(ob);
    }
    this.theGrid.dataProvider = ar;
}

解决方法

到目前为止,我发现的最佳答案是在用户点击时捕获headerRelease事件:
<mx:DataGrid id="theGrid" x="61" y="55" width="466" height="317"
        headerRelease="onHeaderRelease(event)">

然后,事件处理程序可以对数据应用排序顺序:

private var lastIndex:int = -1;
private var desc:Boolean = false;

public function onHeaderRelease(evt:DataGridEvent):void
{
    evt.preventDefault();

    var srt:Sort = new Sort();
    var fields:Array = new Array();

    if( evt.columnIndex == lastIndex )
    {
        desc = !desc;
    }
    else
    {
        desc = false;
        lastIndex = evt.columnIndex;
    }

    fields.push( new SortField( evt.datafield,false,desc ) );
    if( evt.datafield != "A" )
        fields.push( new SortField("A",desc) );
    if( evt.datafield != "B" )
        fields.push( new SortField("B",desc) );
    if( evt.datafield != "C" )
        fields.push( new SortField("C",desc) );
    srt.fields = fields;

    var ar:ArrayCollection = this.theGrid.dataProvider as ArrayCollection;
    ar.sort = srt;
    ar.refresh();
}

然而,这种方法存在一个众所周知的问题,即列标题不再显示小箭头来显示排序方向.这是呼叫的副作用evt.preventDefault()但是您必须拨打该电话,否则您的自定义排序将不会应用.

如何根据多列对flex数据网格进行排序?的更多相关文章

  1. DOMXML函数笔记

    >因此需要改造成这样,可能需要*utf8_encode()utf8_decode()函数进行处理**函数列表*stringdomxml_version返回domxml的版本号*objectxmldoc从字符串创建XML的Domdocument对象*objectxmldocfile从文件创建XML的Domdocument对象*objectxmltree解析xml文档,返回树状结构,不能用domxml函数改变*resourcedomxml_add_root添加根节点*stringdomxml_dumpmem将

  2. ubuntu – 什么是MX记录以及如何为具有多个域的邮件服务器配置此记录?

    在我的基于Ubuntu10.4的虚拟服务器上,我想发送和接收多个域的电子邮件.作为第一步,似乎我必须正确配置MX记录.因为我对此很陌生:什么是MX记录?对于处理domain1.com,domain2.com的邮件服务器,它们看起来如何?

  3. 在从Exchange 2010到365的转换迁移期间,如何处理桌面客户端?

    或者他们可以简单地删除旧的和旧的一切将立即同步到新的?

  4. mx-record – 如果PHP mail()邮件服务器不是FROM域的MX,会出现任何问题吗?

    假设我有这种情况:我的电子邮件地址me@company.com的邮件服务器托管在我的办公室.我的网站company.com由第三方网络托管公司托管.在我的网站上,我创建了一个使用FROM,TO,SUBJECT,BODY并使用PHPmail()发送给客户.由于Web服务器是第三方,PHPmail()使用localhost邮件服务器.我认为我的邮件将到达客户的邮件服务器并显示为“伪造”或垃圾邮件.我需要做些什么来确保我的邮件看起来合法,并且收到的邮件不会发送到第三方网络托管服务商?

  5. Flex警告:无法绑定到类“Object”上的属性“foo”(类不是IEventDispatcher)

    我的容器对象的定义:currentLink在运行时被分配到ArrayCollection的特定索引,我主要使用emptyLink对象进行初始化。当然,这个编译和显示很好,但每个实例都有运行时警告:warning:unabletobindtoproperty‘trigger1’onclass‘Object’warning:unabletobindtoproperty‘trigger2’onclass‘Object’warning:unabletobindtoproperty‘trigger3’onclass

  6. flex – 通过MXML扩展MXML自定义组件

    我想做什么:创建一个MXML组件与一些孩子,然后通过MXML扩展它创建一个新的组件与更多的孩子,而不会丢失原始集.换一种说法创建一个组件bc.mxml然后将其扩展到单独的组件mc.mxml并使用2个按钮获取组件.我已经看到了关于这是不可能的或解决方法来完成这个(2,3)的各种线程,并且一直在想,如果有什么变化随着Flex4的出现,或者如果我们仍然坚持这些解决方法在线程3中的最后一个回复似乎暗示Flex4修复了所有?

  7. 在DataGrid中使用验证器 – Flex

    我有一个可编辑的DataGrid,类似于:当用户编辑数据时,他点击了一个按钮并调用一个将数据保存到数据库的功能,在此功能中我必须在发送数据之前验证数据.我想使用简单的验证器,但我不知道如何将此验证器的源设置为第二列中的指定行.解决方法将validator的属性设置为所需列的datafield.

  8. Flex 4中的Halo和Spark有什么用?

    我使用了Flex2/3几年,刚刚回到它,升级到Flex4.我看到一些Halo和Spark主题的参考,但我从未在我以前的工作中涉及主题,所以我是一个有点混淆发生了什么.我是否认为Halo是默认主题,还是全新的?

  9. 如何根据多列对flex数据网格进行排序?

    我有一个datagrid,填充如下所示.当用户单击列标题时,我想使用词典排序对行进行排序,其中首先使用所选列,然后以从左到右的顺序使用其余列来打破任何关系.我该如何编码呢?(我有一个答案,我将在下面发布,但它有一个问题–如果有人能提供更好的答案,我会很激动!

  10. 任何Flex 4迁移体验?

    Flex4有什么问题吗?DCD如何适合配偶事件图.我知道最好自己尝试一下,但我只是想检查一下有没有人尝试迁移Flex4.如果有的话,有什么问题吗?你注意到生产力的提高吗?

随机推荐

  1. arcgis api for flex之专题图制作饼状图,柱状图等

    总结以上是DEVMAX为你收集整理的arcgisapiforflex之专题图制作饼状图,柱状图等全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  2. arcgis for flex或silverlight全国地图天气预报的实现

    总结以上是DEVMAX为你收集整理的arcgisforflex或silverlight全国地图天气预报的实现全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  3. 天津政府应急系统之GIS一张图arcgis api for flex讲解十一路径导航模块

    总结以上是DEVMAX为你收集整理的天津政府应急系统之GIS一张图arcgisapiforflex讲解十一路径导航模块全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  4. arcgis for flex全国地图天气预报的具体实现过程解析

    总结以上是DEVMAX为你收集整理的arcgisforflex全国地图天气预报的具体实现过程解析全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  5. 天津政府应急系统之GIS一张图arcgis api for flex讲解四地图导航控件模块

    总结以上是DEVMAX为你收集整理的天津政府应急系统之GIS一张图arcgisapiforflex讲解四地图导航控件模块全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  6. BlazeDS

    总结以上是DEVMAX为你收集整理的BlazeDS全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  7. 【Flex】读取本地XML,然后XML数据转成JSON数据

    总结以上是DEVMAX为你收集整理的读取本地XML,然后XML数据转成JSON数据全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  8. 【Flex】读取本地JSON,然后JSON数据转成XML数据

    总结以上是DEVMAX为你收集整理的读取本地JSON,然后JSON数据转成XML数据全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  9. 【Flex】编辑器的缩放功能绝对定位和相对定位

    总结以上是DEVMAX为你收集整理的编辑器的缩放功能绝对定位和相对定位全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  10. 如何实现一个自己的嵌入式语言y

    总结以上是DEVMAX为你收集整理的如何实现一个自己的嵌入式语言y全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

返回
顶部