[
https://issues.apache.org/jira/browse/FLEX-34741?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17495445#comment-17495445
]
Jan Weber commented on FLEX-34741:
----------------------------------
If anyone encounters the same problem, the solution worked fine with the
attached DataGrid AS Class _but_ you need to also override the function
"{*}destroyDropIndicator{*}".
As stated above:
"{_}All the drag handlers in DataGrid need to call showDropIndicator(),
hideDropIndicator(), and destroyDropIndicator() on the GridViewLayout, not the
GridLayout.{_}"
Since the attached class does not contain an _override_ to the
*destroyDropIndicator* function, it will cause a null-pointer in the base class
when it tries to access "{*}_gridViewLayout.dropIndicator{*}".
{{The override looks like:}}
{{ override public function destroyDropIndicator():DisplayObject}}
{{ {}}
{{ var gridViewLayout : GridViewLayout =
GridViewLayout(GridLayout(grid.layout).centerGridView.layout);}}
{{ var dropIndicatorInstance:DisplayObject =
gridViewLayout.dropIndicator;}}{{ if (!dropIndicatorInstance)}}
{{ return null;}}{{ // Release the reference from the
layout}}
{{ gridViewLayout.dropIndicator = null;}}{{ // Release it
if it's a dynamic skin part}}
{{ var count:int = numDynamicParts("dropIndicator");}}{{
for (var i:int = 0; i < count; i++)}}
{{ {}}
{{ if (dropIndicatorInstance ==
getDynamicPartAt("dropIndicator", i))}}
{{ {}}
{{ // This was a dynamic part, remove it now:}}
{{ removeDynamicPartInstance("dropIndicator",
dropIndicatorInstance);}}
{{ break;}}
{{ }}}
{{ }}}{{ return dropIndicatorInstance;}}
{{ }}}
> Spark DataGrid Drag and Drop non functioning
> --------------------------------------------
>
> Key: FLEX-34741
> URL: https://issues.apache.org/jira/browse/FLEX-34741
> Project: Apache Flex
> Issue Type: Bug
> Components: Spark: DataGrid
> Affects Versions: Apache Flex 4.14.0
> Reporter: Devin
> Assignee: Mark Kessler
> Priority: Major
> Labels: drag&drop
> Fix For: Apache Flex 4.15.0
>
> Attachments: DragDropGrid.as
>
>
> Description
> Dropping a dragged item onto the grid does not work. When calculating the
> DropLocation (in dragEnter, dragOver, dragDrop handlers) it falls through to
> LayoutBase.calculateDropIndex which simply executes "return
> target.numElements;" That's clearly not how the dropIndex should be
> calculated on the grid. The GridLayout class should be overriding this method
> and calculating it correctly.
> Furthermore, upon trying to fix this issue (which is more complicated than it
> should be because DataGrid.calculateDropPosition() is marked as private) the
> DataGrid.calculateDropPosition() does not perform a null check on the
> DropLocation (which is valid value).
> Steps to Reproduce
> 1. Create a DataGrid with dragEnabled, dragMoveEnabled, and dropEnabled all
> set to true.
> 2. Try dragging rows around and dropping them.
> Environment
> Windows 8, Apache Flex 4.14
> Expected Behavior
> Seeing the drop indicator.
> The expected behavior of dragging a row and dropping it in another location.
> Actual Behavior
> No drop indicator. Dropping a row does nothing.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)