0

我有一个数据网格。我使用添加按钮向数据网格添加一行。添加后,我会根据列对数据网格进行排序。我还提供序列号,即行号作为数据网格的第一列。但是,排序后序列号功能不适用。因此,为例如第 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
}
);
4

2 回答 2

0

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

于 2009-07-06T21:10:02.923 回答
0

我更喜欢数组而不是数组集合,所以我的选择是将列表维护为原始数组。然后在每次添加时,推送新元素,执行 sortOn ( myArray.sortOn("Type")),然后遍历所有项目以调整序列号。然后将该数组作为新的数据提供者应用到数据网格。

于 2009-07-07T03:22:51.840 回答