2009-10-06 41 views
0

我是一位嘗試Flex的Java開發人員。flex:如何刷新(重新初始化)列表

所以我的新的問題是這樣的:

我有對象填寫的Flex列表組件了從Java(通過結合數據提供器)。 我已經把拖放支持列表。 一切都很好。 但我想要一個重置函數來重新初始化列表,即將拖放元素返回到列表中。

我嘗試了幾個事件處理程序的重置按鈕,但無法重新初始化列表數據。例如:

public function resetList():void { 
     trace("reset") 
     listsrc.dataProvider = srv.getTerritories.lastResult 
    } 

「reset」已調試,但列表中沒有更改。

謝謝;

+0

您確定srv.getTerritories.lastResult包含新值嗎? – Amarghosh

+0

不,它包含舊值,但這不是問題,因爲我希望列表具有舊值。我希望列表具有初始值。 – javanes

回答

0

另一種方法是將控件綁定到可綁定的arrayCollection上。

[Bindable] 
var listDP:Array; 
在MXML代碼

listsrc.dataProvider = listDP; 
在ActionScript

每當你得到它從服務器

listDP = srv.getTerritories.send(); 

通過做這種方式,你不必有你的控制之前實例化從服務器請求數據。

0

try listsrc.invalidateList();

+0

不,它沒有工作。沒有變化的名單。 – javanes

+0

然後您需要將您作爲dataProvider提供的數組的副本保留到列表中。因爲當你拖出它們時,它們將從dataProvider的源代碼中移除,重新分配相同的數組對它沒有任何好處,因爲元素被取出。 – TheBrain

0

我找到了。其實很簡單。我剛纔說:

public function resetList():void { 
     trace("reset") 
     srv.getTerritories.send() 
    } 

因爲已經綁定;數據提供者的任何變化都直接反映到列表中。