首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据分类错误?

数据分类错误?
EN

Stack Overflow用户
提问于 2014-04-09 18:29:09
回答 2查看 326关注 0票数 0

我试图对一个DataGrid Flex组件进行排序,问题是,当我单击箭头对其进行排序时,似乎排序函数不仅对我单击的列进行排序,而且还对其他列进行排序。

为了更好地解释它,假设我的行和列如下所示:(null只是网格中的一个空空间)

debits_______信贷 10____________(null) (null)________11 12____________(null) (null)________13

现在,当我单击credits来排序时,就会发生这样的情况:

debits_______信贷 (null)__________13 12____________(null) (null__________11 10__________(null)

而不是:

debits_______信贷 (null)__________13 (null_____________11 12___________(null) 10__________(null)

我调试了它,比较函数接收的是4个值,10、11、12和13,而不是2、13和11。这让我想知道,为什么会发生这种情况?难道排序函数不应该只关心我正在排序的列,而不关心其余的列吗?

不管怎么说,结果糟透了。

EN

回答 2

Stack Overflow用户

发布于 2014-04-10 03:15:12

您可以自定义sortCompareFunction。

DataGridColumn将行的数据排序为字符串,如果要将其作为数字进行比较,则应定义sortCompareFunction

即:

代码语言:javascript
复制
public static function numericCompare(key:String):Function
    {
        return function(itemA:Object, itemB:Object):int
        {
            if (itemA == null && itemB == null)
                return 0;

            if (itemA == null)
                return 1;

            if (itemB == null)
                return -1;

            var emptyA:Boolean = StringUtil.isEmpty(itemA[key]);
            var emptyB:Boolean = StringUtil.isEmpty(itemB[key]);

            if (emptyA && emptyB)
                return 0;

            if (emptyA)
                return 1;

            if (emptyB)
                return -1;

            var num1:Number = Number(itemA[key]);
            var num2:Number = Number(itemB[key]);

            return mx.utils.ObjectUtil.numericCompare(num1, num2);
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2014-04-24 07:07:57

实际上,文档说:

注意: obj1和obj2参数是整个数据提供程序元素,而不仅仅是项的数据。

因此,这是正常和预期的。

您可能认为这是奇怪或复杂的,但是DataGrid中的许多特性使用其行的数据,而不仅仅是其列的数据。

如果它们只提供有关列(或数据字段)的信息,但您需要更多有关数据的信息,那么代码将变得非常脏和难闻。或者,您可能需要为此编写几十行代码。

看,就在昨天,也有人处于类似的情况:用itemEditor实现flex数据集的验证

(假设您必须对values字段进行排序。某些值需要根据其类型进行解析。)

它很方便,而且在现实世界中给你节省了很多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22971016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档