在FLEX中添加新的datagridRow,对datagrid进行排序并提供序列号

时间:2009-07-06 21:00:28

标签: sorting flex datagrid serial-number

我有一个数据网格。我使用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
}
);

2 个答案:

答案 0 :(得分:0)

sortGridSerialNumbers是否应该在排序后返回当前的序列号?因为它似乎只显示原始状态的序列号。由于您将项目添加到dataProvider而不是原始数组,因此它不会为添加的任何项目提供正确的值。

答案 1 :(得分:0)

我比数组集更喜欢数组,所以我的选择是将列表保持为原始数组。然后在每次添加时,按下新元素,执行sortOn(myArray.sortOn("Type")),然后遍历所有项目以调整序列号。 然后将数组作为新的数据提供者应用于数据网格。