学习FLEX过程中又碰到问题了。
例如有A、B两个List组件。 将A中的某项多次拖到B中后,发现这些项并不是作为新生成项加到B的dataProvider中.我在下例中给接收数据的List组件数据源加了个监听。
当数据更改后会在每项前加个序号
看下例:
Flash动画
点击查看MXML文件
若将左列表同一项多次拖至右边列表中,可以看到输出文本显示的是列表中相邻两项相同(序号也相同)
这里用的是“===”符号来比较的。说明默认拖动列表的数据源是不会产生新项,具体原因没有研究,有知道的大虾指点下下 呵呵
最后在FLEX DOC TEAM找到了解决方法:就是自定义dragDrop事件
MXML文件及自定义事件:
[code]
private function dragDropEvent(event:DragEvent):void {
//检测数据结构
if (event.dragSource.hasFormat("items")){
//取消默认事件处理
event.preventDefault();
event.currentTarget.hideDropFeedback(event);
//获取拖拽接收对象
var dropTarget:List=List(event.currentTarget);
//获取拖拽对象数据
var itemsArray:Array = event.dragSource.dataForFormat("items") as Array;
//获取拖拽对象数据第一项
var tempItem:Object = {label: itemsArray[0].label, data: itemsArray[0].data};
//获取插入位置
var dropLoc:int = dropTarget.calculateDropIndex(event);
//插入项
IList(dropTarget.dataProvider).addItemAt(tempItem, dropLoc);
}
}
[/code]
更改过的实例如下:
Flash动画
点击查看MXML文件
实例下载
参考:[color=Black]FLEX DOC TEAM DRAGDrop PDF文档及实例
http://blogs.adobe.com/flexdoc/2007/02/drag_and_drop_documentation_up.html


Hello! Quick question that’s completely off topic. Do you know how to make your site mobile friendly? My website looks weird when viewing from my iphone. I’m trying to find a theme or plugin that might be able to correct this problem. If you have any recommendations, please share. Cheers!
[Reply]
I don’t even know how I ended up here, but I thought this post was very good. I do not know who you are but certainly you are going to a famous blogger in the event you aren’t already Cheers!
[Reply]