限制数据网格中某些项目的拖放? - 土坯柔性

Posted

技术标签:

【中文标题】限制数据网格中某些项目的拖放? - 土坯柔性【英文标题】:Restrict drag and drop of some items in a datagrid? - Adobe Flex 【发布时间】:2017-05-29 04:19:09 【问题描述】:

我想限制数据网格中特定项目的拖放。并非所有项目都将添加到数据网格中。 例如,当我单击并将项目 X 拖动到数据网格时,它被添加。如果我单击并将另一个项目 Y 拖动到同一个数据网格中,它将不会被添加。

<s:Label text="Source"/>
<mx:DataGrid id="srcgrid"
    allowMultipleSelection="true" 
    dragEnabled="true" 
    dropEnabled="true" 
    dragDrop="dragDropHandlerSrc(event);"
            dragMoveEnabled="true">
            <mx:columns>
                <mx:DataGridColumn dataField="Expense"/>
                <mx:DataGridColumn dataField="Value"/>
            </mx:columns>    
        </mx:DataGrid>

<s:Label text="Costs"/>
<mx:DataGrid id="costgrid"
    allowMultipleSelection="true" 
    dragEnabled="true" 
    dropEnabled="true" 
    dragMoveEnabled="true"
    dragDrop="dragDropHandlerCost(event);">
    <mx:columns>
        <mx:DataGridColumn dataField="Espense"/>
        <mx:DataGridColumn dataField="Value"/>
    </mx:columns>    
</mx:DataGrid>

<fx:Script>
    private function initApp():void 
        srcgrid.dataProvider = new ArrayCollection([
        Expense:'Electricity', Value:100,
        Expense:'Phone', Value:200,
        Expense:'Water', Value:300,
        Expense:'Contract A', Value:500,
        Expense:'Contract B', Value:600
        ]);

        costgrid.dataProvider = new ArrayCollection([]);
    
</fx:Script>

在本例中,srcgrid 中的 Electricity、Phone 和 Water 项目将添加到 datagrid costgrid 中。并且项目合同 A 不会被添加到 costgrid 中。

有什么想法吗?

提前致谢!

【问题讨论】:

【参考方案1】:

你可以这样做

private function dragDropHandlerCost(event:DragEvent):void 

        var dragObj:Vector.<Object> =
                event.dragSource.dataForFormat("itemsByIndex") as Vector.<Object>;
        if (dragObj[0].Expense == "Contract A")
            event.preventDefault();
            DragManager.showFeedback(DragManager.NONE);
        

    

【讨论】:

以上是关于限制数据网格中某些项目的拖放? - 土坯柔性的主要内容,如果未能解决你的问题,请参考以下文章

Extjs 拖放示例使用 Grid 到 Grid 与插件侦听器

使用核心数据存储对 NSTableView 的拖放支持

什么是“用鼠标移动东西”中的拖放,而不是数据传输中的拖放?

为啥 Qt 中的拖放停止工作?

H5中元素的拖放

Coolite 中的拖放 GridPanel 行