限制数据网格中某些项目的拖放? - Adobe Flex
Restrict drag and drop of some items in a datagrid? - Adobe Flex
我想限制数据网格中特定项目的拖放。并非所有项目都将添加到数据网格中。
例如,当我单击项目 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 的项目电力、Phone 和水将被添加到数据网格成本网格中。而项目Contract A将不会添加到costgrid中。
有什么想法吗?
提前致谢!
你可以这样做
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);
}
}
我想限制数据网格中特定项目的拖放。并非所有项目都将添加到数据网格中。 例如,当我单击项目 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 的项目电力、Phone 和水将被添加到数据网格成本网格中。而项目Contract A将不会添加到costgrid中。
有什么想法吗?
提前致谢!
你可以这样做
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);
}
}