dhtmlxtree onEdit does not work !!! :(

Hi,



I am using the dhtmlxtree professional version 1.6. I am using the tree in my project and i would like to catch the event when a modification is made on a node. I have read through the documentation and i implemented as follows:



tree.attachEvent(“onEdit”,onNodeEdit); //call onNodeEdit function



function onNodeEdit(state,id,tree,value)

    {

    switch (state) {

        case 0: return true;

        break

        

        case 1:

        break

        

        case 2: return true;

        break

        

        case 3: xmlhttprequest(); //call xmlhttprequest function

        break

        

        default:

                 }

    

    }





function xmlhttprequest()

    {

    

    var myXmlStr = tree.serializeTree();    

    

         var xmlhttp=false;

        /@cc_on @/

        /@if (@_jscript_version >= 5)

        // JScript gives us Conditional compilation, we can cope with old IE versions.

        // and security blocked creation of the objects.

         try {

         xmlhttp = new ActiveXObject(“Msxml2.XMLHTTP”);

         } catch (e) {

         try {

         xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”);

         } catch (E) {

         xmlhttp = false;

         }

         }

        @end @
/

        if (!xmlhttp && typeof XMLHttpRequest!=‘undefined’) {

            try {

                xmlhttp = new XMLHttpRequest();

            } catch (e) {

                xmlhttp=false;

            }

        }

        if (!xmlhttp && window.createRequest) {

            try {

                xmlhttp = window.createRequest();

            } catch (e) {

                xmlhttp=false;

            }

        }



// the following code, redirects to a java class Save which contains the method to save the serialized tree in DB

        

xmlhttp.open(“POST”, “mainservlet?cl=save.Save&method=saveDhtmlxtree”,true);

                 xmlhttp.onreadystatechange=function() {

        if (xmlhttp.readyState==4) {

        

         }

         }

         xmlhttp.setRequestHeader(“Content-Type”, “text/xml”)

         xmlhttp.send(myXmlStr);

    }







The behavior from the above code is not what i was expecting.

What is supposed to do is. when ever the node is edited and not yet closed (case:3), the tree should be serialized into a var and saved to the DB. I have narrowed down the point where the error occurs and it points to the serializer.



var myXmlStr = tree.serializeTree();    



what could be wrong with the serializer???



Can any one point out where i am making the mistake or any other way to find when a node is edited so that the DB can be updated with the latest version of the tree.



Thanks in advance

choe :slight_smile:

The problem caused by recursive calls, in moment when you call serializeTree the edit operation not fully finished yet, so
- call serializeTree
- tree code stop edit before serialization
- call of onEdit event
- call serializeTree
   … infinite recursive loop…

To resolve issue, just call you code a moment after edit operation

        

        case 2: return true;

        break

        

        case 3:
              window.setTimeout(xmlhttprequest,1);
        break