我有一个数据网格,其数据如下:
Column1 Column2
1 10
2 11
3 10
4 10
单击Column2并使用Default Sort时,datagrid将变为:
Column1 Column2
3 10
1 10
4 10
2 11
为什么?我想它应该是:
Column1 Column2
1 10
3 10
4 10
2 11
默认排序有什么问题?有谁能告诉我如何修复它?
谢谢!
答案 0 :(得分:3)
这是一个有趣的问题。我调查了一下,发现最后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;
}