Start Building Professional
Web Apps Today


 
Categories Question details Back To List
Question  posted by Jame Chiang on Jun 11, 2009 04:19
open dhtmlx forum
wrong itemid after drop (part 2)

follow previous instructions, change my code and tree ids:

http://dhtmlx.com/docs/products/kb/index.php?s=normal&q=9903&a=16028

my code:

    dhxTree.attachEvent("onDrag",function(sid,tid){
   
    if(tid == "t_"+sid) return false; /* denies same people*/   
    var list = this.getSubItems(tid);
    var tid_t = tid.substr(2,tid.length-2);
   
    if (list.length == 0)
    {
        this.changeItemId(sid,tid_t+"_"+sid);/*sets new id*/    
        return true;
    }  
    else
    {
    leaves = list.split(",");
    for(var i =0; i < leaves.length;i++)
        if(leaves[i]==tid_t+"_"+sid) return false; /* denies drag-n-drop*/
        this.changeItemId(sid,tid_t+"_"+sid);/*sets new id*/
        return true;
    }
    })  
 

Source tree’s structure like this:
Level1:Area-A
Level2:  Customer-A(id:t13-11)
Level2:  Customer-B(id:13-1)
Level1:Area-B
Level2:  Customer-C(id:13-3)

Target tree’s structure like this:
Level1:Type-A
Level2:  Customer-A (id: t_13-11)
Level2:  Customer-C (id: t_13-3)
Level1: Type-B
Level2:  Customer-B (id: t_13-1)

1. drag “Customer-A”, drop “Customer-A”, action cancel, ok

2. drag “Customer-B”, drop “Customer-A”, add in, wrong item-id at line3 
Target tree’s structure like this:
/line1/Level1:Type-A
/line2/Level2:  Customer-A (id: t_13-11)
/line3/Level3:    Customer-B (id: 13-1, id no change)
/line4/Level2:  Customer-C (id: t_13-3)
/line5/Level1: Type-B
/line6/Level2:  Customer-B (id: t_13-1)

3. drag “Customer-C”, drop “Customer-A”, add in, wrong item-id at line3,4
Target tree’s structure like this:
/line1/Level1:Type-A
/line2/Level2:  Customer-A (id: t_13-11)
/line3/Level3:    Customer-B (id: 13-1, id no change)
/line4/Level3:    Customer-C (id: 13-3, id no change)
/line5/Level2:  Customer-C (id: t_13-3)
/line6/Level1: Type-B
/line7/Level2:  Customer-B (id: t_13-1)

4. drag “Customer-B” again, drop “Customer-A”, add in, wrong item-id at line4,5

Target tree’s structure like this:
/line1/Level1:Type-A
/line2/Level2:  Customer-A (id: t_13-11)
/line3/Level3:    Customer-B (id: 13-11_13-1, correct, but is second times )
/line4/Level3:    Customer-C (id: 13-3, id no change)
/line5/Level3:    Customer-B (id: 13-1, id no change)
/line6/Level2:  Customer-C (id: t_13-3)
/line7/Level1: Type-B
/line8/Level2:  Customer-B (id: t_13-1)

 

Answer posted by Alex (support) on Jun 11, 2009 07:03

Sorry for the misleading information. The id should be changed when item is dropped (when onDrop is called):

dhxTree.attachEvent("onDrag",function(sid,tid){
 if(tid == sid) return false; /* denies same people*/
 var list = this.getSubItems(tid);
 leaves = list.split(",");
 for(var i =0; i < leaves.length;i++)
  if(leaves[i]==tid+"_"+sid) return false; /* denies drag-n-drop*/
 return true;
})  
dhxTree.attachEvent("onDrop",function(sid,tid){
 this.changeItemId(sid,tid+"_"+sid);/*sets new id*/
 return true;
})