2009-07-06 46 views
0

我有一個數據網格。我使用ADD按鈕向數據網格添加一行。一旦我添加,我基於列對數據網格進行排序。我還提供序列號,即行號作爲數據網格的第一列。但是,序列號功能在排序後不適用。因此,增加了一個新的行,例如第5行,基於排序應該是第1行,顯示的序列號仍然是第5行。UI看起來不好,因爲數字的順序不正確。代碼是:添加新的datagridRow,排序的DataGrid和給予序列號,在FLEX

// 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

//地點施加序列號功能: 的 user120118 2009-07-06 21:00:48

回答

0

sortGridSerialNumbers應該在排序後返回當前序列號嗎?因爲它似乎只顯示原始狀態的序列號。它不會爲自從將項添加到dataProvider之後添加的任何項目提供正確的值,而不是原始數組。

+0

是的,我希望sortGridSerialNumbers到排序後返回當前序列號。我嘗試在數組內推入值,但實際上使序列號計數增加2而不是增加1.另外,我不知道在添加到數組後它是否會工作。問題是序列號函數在ArrayCollection而不是數組上工作。所以,我創建了一個數組Collection myDPColl。我sortGrid Arrauy看起來是這樣的:

 private var sortGridArray:Array = [ { Type:"Level0" } 
user120118 2009-07-06 21:27:19

0

我喜歡陣列比陣列集合好,所以我的選擇是保持清單作爲原料陣列。然後在每次添加時,推新元素,執行sortOn(myArray.sortOn("Type")),然後遍歷所有項目以調整序列號。 然後將數組作爲新的數據提供者應用於數據網格。