在Flex列表上手动实施拖动

时间:2009-05-15 19:57:23

标签: flex drag-and-drop

我有一个Flex应用程序,它根据项目的分类方式,在几个List之一中显示一组项目。通过在列表之间拖动项目,用户启动服务器端进程,该进程尝试重新分类项目。然后,服务器端进程返回一些XML,其中包含错误消息或“确定”。

要求UI在服务器返回OK时执行“拖动移动”,如果服务器返回错误则执行no-op。使用默认拖动处理程序(在dragEnabled=true上设置dropEnabled=trueList)似乎始终执行拖动副本。

据我所知,我能够对事物进行足够控制以处理异步服务器验证的唯一方法是手动实现对列表的拖动。所以我读了Adobe's documentation并尝试调整他们的例子。

我遇到的问题是,据我所知,我需要通过连接到列表上的mouseMove事件来检测拖动。然后我将List作为启动器传递给DragManager.doDrag例程。

以这种方式工作有很多问题:默认代理图像是整个列表的大小,尝试使用滚动条设置拖动检测等。显然我做错了。

是否有人尝试手动对List实施拖动?是否有正确检测拖拽事件的快速技巧?我是否应该搜索用户正在拖动并将其作为发起者传递的实际itemRenderer?

2 个答案:

答案 0 :(得分:2)

我认为你的拖动启动器应该是你要拖动的项呈示器而不是整个List控件。

答案 1 :(得分:0)

嗯......如果我理解你在这里要做什么,你想拖一滴,但如果服务器返回错误就撤消?

我要做的是处理dragEnd事件并检查服务器状态。如果服务器返回了错误,则只需将数据移回原始列表,不要将其添加到新列表中,否则只需执行默认行为。随意评论澄清。