2009-12-17 72 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