Start Building Professional
Web Apps Today


 
Categories Question details Back To List
Question  posted by Mark Ritter on Aug 17, 2009 18:54
open dhtmlx forum
onDrop

I have a grid (not pro) with drag-n-drop. I use

DNSServersGrid.attachEvent("onDrop",HandleDropDNSServer);

This goes to the function, but before the item is actually moved. How do I then extract the contents of the grid to an array so I can update other gadgets according the grid order?


Drag and drop item
Goto onDrop function
Extract grid order to an array
Do some stuff with array
Fill other gadgets from array
return from onDrop function
Answer posted by dhxSupport on Aug 18, 2009 00:33
To catch moment when drag operation starts you can use "onBeforeDrag" event (available in pro version only). onBeforeDrag event passes the following parameter: 
id - id of the dragged row.
  grid.attachEvent("onBeforeDrag", function(id){});
This event returns: true - confirms drag-and-drop; false - denies drag-and-drop (operation will not start); any other text value - used as visual representation of the dragged row

To retrive necessary information from sourse grid you can use parameters of HandleDropDNSServer function. "onDrop" event  passes the following parameters: 
sId - id of the source item;
tId - id of the target item;
dId - id of the dropped item (has sense for mercy drag-n-drop);
sObj - source grid object;
tObj - target grid object;
sCol - index of the column from which drag started;
tCol - index of the column in which drop occurs.
  grid.attachEvent("onDrop", function(sId,tId,dId,sObj,tObj,sCol,tCol){});

Please find more inforamtion here http://dhtmlx.com/docs/products/dhtmlxGrid/doc/articles/Managed_Drag_and_Drop.html#grid_mandnd


Answer posted by Mark Ritter on Aug 18, 2009 15:08

   I guess I should have explained more: it's in the same grid.  Just moving items up/down.  onDrop goes to the function, but the items have not been moved yet.  When return from the onDrop function, they get moved and it's too late to catch the event now.

   So if I drag an item from position 5 to position 2 in the same grid, how do I now scan the grid once it's dropped? 

 

Answer posted by Support on Aug 19, 2009 02:30
The onDrop event in grid occurs after node was moved, on moment of event , the row in grid already moved to the new position ( it may be not reflected in GUI yet, but the inner model already updated , so any API calls will state that row is at new position )

If you need to catch moment exactly before moving you can use "onDrag" event, the moment exactly after moving - "onDrop" event

Beware that moving row by moveRowUp and moveRowDown commands will not trigger events at all. 

>> how do I now scan the grid once it's dropped
If you call serialization or any other method from onDrop event it will reflect the new order of rows. 
Answer posted by Mark Ritter on Aug 19, 2009 06:39

I am not using Pro version.

Yes, onDrop is supposed to be after the item was dropped and grid updated, then function called.  But what are we to do when not using Pro version?

Answer posted by Mark Ritter on Aug 19, 2009 06:52

Ok, this is driving me nuts.

I just tried it in a different grid, worked perfectly.  But still not in the original grid.  Hmmmmm........

 

Answer posted by Support on Aug 19, 2009 07:17
If you can localize problematic case in a separate sample - you can send it to support@dhtmlx.com ( or link to the page where issue can be reconstructed )