我用一個臨時數組來填充一個ListCollectionView。後來,我有一個屏幕顯示一個DataGrid使用ListCollectionView作爲dataProvider。用戶可以通過選擇行然後單擊刪除按鈕來刪除DataGrid中的一行。Flex/AS3:從ListCollectionView刪除項目
如何訪問ListCollectionView使用的原始源,並從那裏刪除項目?
我這樣做後,該項目是否也會從ListCollectionView自動刪除,並不再顯示在DataGrid中(或需要刷新的東西)?
UPDATE 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
我不知道爲什麼(我「M使用SDK 4.5.1A),但我似乎需要下面的代碼行添加到上面的代碼更新1,爲DataGrid可靠地更新,並顯示已刪除行:
_myLCV.refresh();
在實踐中(使用我的UPDATE1代碼上面),我觀察DataGrid間歇性地仍然顯示刪除的項目。在這些情況下,我可以再次選擇該項並嘗試第二次刪除它,然後Flash Builder崩潰,因爲它試圖訪問索引值爲-1(RangeError:Index'-1'指定超出範圍。 ')。任何想法爲什麼會發生? – ggkmath 2012-08-01 01:48:35