2009-12-17 71 views
0

我一直在使用Flex中水平列表內的項目拖放操作。它工作正常,但現在我需要通過AMF在數據庫中保存新訂單。我很確定這很容易,但我還沒有弄明白。Flex - 通過AMF保存水平列表項目的新訂單

是否有辦法循環(重新排序後)所有項目,以便我可以爲每個項目獲取其(新)索引?

而且我注意到,即使我更改順序,在數據提供程序的順序總是相同的...

這是我的名單:

<mx:HorizontalList id="horizontalList" 
    allowMultipleSelection="true" 
    allowDragSelection="true" 
    dragEnabled="true" 
    dropEnabled="true" 
    dragMoveEnabled="true" 
    labelField="lbl" 
    iconField="src" 
    itemRenderer="CustomItemRenderer_gallery" 
    columnCount="5" 
    columnWidth="125" 
    rowHeight="125" 
    horizontalScrollPolicy="on" 
    doubleClickEnabled="true" 
    click="{click(event);}" 
    dragDrop="handleBtnReorder(event)" 
    doubleClick="doubleClick(event);" /> 

回答

0

我只想通過列表循環dataProvider,您將項目拖到... while循環將新訂單(i)存儲在您的ArrayCollection中的變量中,填充dataProvider ...然後將ArrayCollection轉換爲數組以傳遞到您的服務器端進行處理。

類似:

for(var i:int = 0; i < yourList.dataprovider.length; i++) 
{ 
    yourList.dataProvider.getItemAt(i).order = i; 
} 
// then convert the ArrayCollection to an Array and pass to your RemoteObject. 
+0

我拖在同一個列表中的項目,並且將dataProvider順序不會改變......我認爲有某種本地方法的,甚至一些自繼承名單類。 – 2009-12-18 08:37:40

+0

我的錯誤,我正在使用錯誤的事件,dragDrop ..在dragComplete,dataProvider已經改變,我可以做所有需要的安排:)謝謝! – 2009-12-18 08:51:44