0

私はデータグリッドを持っています。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
}
);
4

2 に答える 2

0

私は配列コレクションよりも配列の方が好きなので、リストを生の配列として維持することを選択します。次に、追加するたびに、新しい要素をプッシュし、sortOn ( myArray.sortOn("Type")) を実行してから、すべてのアイテムを反復処理してシリアル番号を調整します。次に、配列を新しいデータプロバイダーとしてデータグリッドに適用します。

于 2009-07-07T03:22:51.840 に答える
0

sortGridSerialNumbers は、ソート後に現在のシリアル番号を返すことになっていますか? 元の状態のシリアル番号のみを表示しているように見えるためです。元の配列ではなく、dataProvider にアイテムを追加した後に追加されたアイテムには、正しい値が与えられません。

于 2009-07-06T21:10:02.923 に答える