Apache flex Flex:DataGrid默认排序中的问题

Apache flex Flex:DataGrid默认排序中的问题,apache-flex,datagrid,Apache Flex,Datagrid,我有一个datagrid,其中包含如下数据: 第1列第2列 110 2 11 3 10 4.10 单击Column2并使用默认排序时,datagrid将变成: 第1列第2列 3 10 110 4.10 2 11 为什么?我想应该是: 第1列第2列 110 3 10 4.10 2 11 默认排序有什么问题?有人能告诉我如何解决吗 谢谢 这是一个有趣的问题。我查看了一下,发现最后调用了Array.sortOn()函数。在对该函数的描述中,有一行是这样说的: 修改数组以反映排序顺序;具有相同排序字段

我有一个datagrid,其中包含如下数据:

第1列第2列
110
2 11
3 10
4.10

单击Column2并使用默认排序时,datagrid将变成:

第1列第2列
3 10
110
4.10
2 11

为什么?我想应该是:

第1列第2列
110
3 10
4.10
2 11

默认排序有什么问题?有人能告诉我如何解决吗


谢谢

这是一个有趣的问题。我查看了一下,发现最后调用了
Array.sortOn()
函数。在对该函数的描述中,有一行是这样说的:

  • 修改数组以反映排序顺序;具有相同排序字段的多个元素以无特定顺序连续放置在排序数组中
由于没有办法研究代码,我会做出一个有根据的猜测,不保持项目的先前顺序的选择取决于它的效率成本,在大多数情况下没有真正的理由保持顺序。这就是默认的1列排序所反映的行为

在您的例子中,有一个快速而肮脏的(因为这是一个星期六:)示例,说明如何获得您想要的结果。 您的数据网格:

<mx:DataGrid id="DG" >
    <mx:columns>
        <mx:DataGridColumn  dataField="0"  />
        <mx:DataGridColumn  dataField="1" sortCompareFunction="testsortCompareFunction" />
    </mx:columns>
</mx:DataGrid>

排序功能:

private function testsortCompareFunction(object1:Object,object2:Object):int
        {
            if (object1[1]>object2[1]) return 1;
            if (object1[1]<object2[1]) return -1;
            if (object1[1]==object2[1]) 
            {
                if (object1[0]>object2[0]) return 1;
                if (object1[0]<object2[0]) return -1;
            }
            return 0;
        }
private function testsort比较(object1:Object,object2:Object):int
{
if(object1[1]>object2[1])返回1;
if(object1[1]object2[0])返回1;

if(object1[0]嘿,Robert,谢谢你的回复。我想记录上一次排序的内部机制可以解决这个问题,添加排序比较不是一个好方法。你有什么好主意吗?