我有一个数据网格。我使用ADD按钮向数据网格添加一行。添加后,我会根据列对数据网格进行排序。我还提供序列号,即行号作为数据网格的第一列。但是,序列号功能在排序后不适用。因此,为例如添加了一个新行。第5行,基于排序应该是第1行,显示的序列号仍然是第5行。由于数字的顺序不正确,UI看起来很糟糕。代码是:
// Sorting Function :
private function sortGrid():void
{
sortGridColl = new ArrayCollection(sortGridArray);
sortA = new Sort();
sortByLevel = new SortField("Type", true, false);
sortA.fields=[sortByLevel];
sortGridColl.sort=sortA;
sortGridColl.refresh();
sortGrid.dataProvider=sortGridColl;
sortGrid.rowCount=myDPColl.length +1;
}
// Serial Number function :
private function sortGridSerialNumbers(oItem:Object,iCol:int):String
{
myDPColl = new ArrayCollection(sortGridArray);
var iIndex:int = myDPColl.getItemIndex(oItem) + 1;
return String(iIndex);
}
// Adding new row to datagrid :
sortGrid.dataProvider.addItem
(
{
Type : typeName.text
}
);
答案 0 :(得分:0)
sortGridSerialNumbers是否应该在排序后返回当前的序列号?因为它似乎只显示原始状态的序列号。由于您将项目添加到dataProvider而不是原始数组,因此它不会为添加的任何项目提供正确的值。
答案 1 :(得分:0)
我比数组集更喜欢数组,所以我的选择是将列表保持为原始数组。然后在每次添加时,按下新元素,执行sortOn(myArray.sortOn("Type")
),然后遍历所有项目以调整序列号。 然后将数组作为新的数据提供者应用于数据网格。