2009-11-21 42 views
1

我正在處理Flex 3項目,並且我正在使用一對XMLListCollection來管理組合框和數據網格。XMLListCollection上的堆棧溢出collectionEvent

組合框的工作完美。這個XMLListCollection是靜態的。用戶選擇一個項目,然後在「更改」時,將addItem()引發到第二個集合。第二個集合的datagrid然後顯示更新的列表,一切都很好。

然而,datagrid是可編輯的。另一個複雜的是,我有另一個事件處理程序綁定到第二個XMLLIstCollection的「更改」事件,並在該處理程序中,我做了第二個列表的額外更改。這基本上導致第二個列表「更改」處理程序的無限循環(堆棧溢出:D)。

我不太確定如何處理這個問題。搜索提出了一個或兩個有關自動更新功能的想法,但我無法從中獲得太多。特別是,行爲依然存在,只要我重新啓用就執行「更新」,所以我想我可能會做錯了。一般而言,我希望更新能夠運行,而不是在代碼塊中運行。

感謝您的幫助!

回答

0

嘗試將行爲綁定到自定義事件而不是CHANGE事件。

I.e.做你現在正在做的事情,但派遣和處理自定義事件來完成這項工作。

0

您是否考慮過使用callLater? 直接操作XMLListCollection的源XMLList是否具有相同的結果? 你有沒有考慮過這樣的事情:

private function changeHandler(event:Event):void 
{ 
    event.target.removeEventListener(event.type, changeHandler); 

    // your code here. 

    event.target.addEventListener(event.type, changeHandler); 
} 
+0

這看起來很有希望。我很想嘗試一下。謝謝 – reidLinden 2009-11-25 13:09:34