1

一時配列を使用して ListCollectionView を設定しました。後で、ListCollectionView を dataProvider として使用して DataGrid を表示する画面があります。ユーザーは、行を選択して [削除] ボタンをクリックすることにより、DataGrid 内の行を削除できます。

ListCollectionView が使用する元のソースにアクセスし、そこからアイテムを削除するにはどうすればよいですか?

それを行った後、アイテムは ListCollectionView から自動的に削除され、DataGrid に表示されなくなりますか (または、何かを更新する必要がありますか)。

更新 1

次のことは、私が正しい軌道に乗っているように聞こえますか? (ListCollectionViewだけでなく、ListCollectionViewのソース(「.list」ですか?)から削除したいです。)

[Bindable] private var _myLCV:ListCollectionView=new ListCollectionView(new ArrayList());
...
var obj:Object = _myLCV.getItemAt(myGrid.grid.selectedIndex); // get item user selected
_myLCV.list.removeItemAt( _myLCV.list.getItemIndex(obj) );   // delete item from source

更新 2

理由はわかりませんが (SDK 4.5.1A を使用しています)、DataGrid が削除された行を確実に更新して表示するには、UPDATE 1 の上記のコードに次のコード行を追加する必要があるようです。

_myLCV.refresh();
4

2 に答える 2

2

私の衝動は、 removeItemAtを使用してListCollectionViewからアイテムを削除することをお勧めすることです。

コレクションを処理するのではなく、本当にソースにアクセスしたい場合は、使用しているListCollectionViewのタイプによって異なります。

ArrayCollectionを使用している場合は、sourceプロパティを使用してソースにアクセスできます。XMLListCollectionを使用している場合は、sourceプロパティを使用してソースにアクセスできます。

ListCollectionViewには固有のソースプロパティはありませんが、Listプロパティで十分な場合があります。

いずれの場合も、ListCollectionViewまたはListCollectionViewのソースからアイテムを削除すると、DataGridが自動的に更新されます。そうでない場合は、コレクションでrefresh()メソッドを呼び出すことができます。

于 2012-08-01T00:57:21.923 に答える
0

Spark DataGrid は、List や DataGroup などの他のリスト ベース コントロールと同様に、dataProvider からの変更イベントを監視します。変更イベントには、アイテムの削除、更新、並べ替え、および挿入が含まれる場合があります。これにより、基になるデータを更新するだけでコントロールを更新できるようになります。

とはいえ、データグリッドを「リフレッシュ」して LIstCollectionView で最新の状態に保つことが目的の場合は、配列を変更してからリフレッシュする必要はありません。

于 2012-08-01T01:44:42.613 に答える