2012-03-13 6 views
2

新しいdynatreeをドラッグアンドドロップして保存する方法がわかりません。ドラッグアンドドロップ後のdynatree構造体の保存方法

私は2つのdynatreeを持っています。私は1つから別のものにドラッグしていますが、私は新しいツリーの構造の情報を得ることができるかどうかわかりません。 私の最初のツリー:

$("#tree1").dynatree({ 

       title: "tree", 
       children: [{ title: "tree1", isFolder: true}], 
       dnd: { 
        onDragStart: function (node) { 

         logMsg("tree.onDragStart(%o)", node); 
         return true; 
        }, 
        onDrop: function (node, sourceNode, hitMode, ui, draggable) { 

         logMsg("tree.onDrop(%o, %o, %s)", node, sourceNode, hitMode); 
         sourceNode.move(node, hitMode); 
        } 
       } 


      }); 

と第二:

$("#Tree2").dynatree({ 
       title: "Tree", 

       children: [{ title: "MyTree", isFolder: true}], 


       isLazy: true, 

       dnd: { 
        onDragStart: function (node) { 

         logMsg("tree.onDragStart(%o)", node); 
         return true; 
        }, 
        onDrop: function (node, sourceNode, hitMode, ui, draggable) { 

         logMsg("tree.onDrop(%o, %o, %s)", node, sourceNode, hitMode); 
         sourceNode.move(node, hitMode); 
        }, 
        onDragEnter: function (node, sourceNode) { 

         logMsg("tree.onDragEnter(%o, %o)", node, sourceNode); 
         return true; 
        }, 
        onDragOver: function (node, sourceNode, hitMode) { 

         logMsg("tree.onDragOver(%o, %o, %o)", node, sourceNode, hitMode); 
        }, 

        onDragLeave: function (node, sourceNode) { 

         logMsg("tree.onDragLeave(%o, %o)", node, sourceNode); 
        }, 
        onDrop: function (node, sourceNode, hitMode, ui, draggable) { 

         logMsg("tree.onDrop(%o, %o)", node, sourceNode); 
         var copynode; 
         var rootNode = $("#OrganizationTree").dynatree("getRoot"); 
         if (sourceNode && (node.data.title === 'Organization' || node !== rootNode)) { 
          copynode = sourceNode.toDict(true, function (dict) { 
           dict.title = dict.title; 
           dict.key = sourceNode.data.key; 
           node.data.isFolder = true; 

          }); 
         } else { 
          alert(" please drop your node into the organization"); 
         } 
         if (hitMode == "over") { 
          // Append as child node 
          node.addChild(copynode); 
          sourceNode.remove();  
         } 
        } 
       } 

      }); 

構造を樹上村保存する方法?事前

答えて

4

で おかげであなたはこのようなものを使用できます:あなたがしたいところはどこでもあなたがデータを保存

<? 
function noFalseMulti($var) 
/* 
*This function will remove from array key containing 'false' of 'null' (empty keys) 
* 
*I have realized, if there are this data it shows error-I don't know why 
*/ 
    { 
    $var=array_filter($var, 'noFalse'); 
    foreach($var as $key => $value) 
    { 
    if(is_array($var[$key])) 
     { 
     $var[$key]=noFalseMulti($var[$key]); 
     } 
    } 
    return $var; 
    } 

$dataToSave=serialize(noFalseMulti($_POST['recieved'])); 
?> 

forajax.php

dnd: { 
      onDrop: function(node, sourceNode, hitMode, ui, draggable) { 
      /** This function MUST be defined to enable dropping of items on 
      * the tree. 
      */ 
      sourceNode.move(node, hitMode); 
      var currentTree = $("#tree").dynatree("getTree").toDict(); 
      $.post("forajax.php", { recieved: currentTree}, 
       function(data) { 
       $("#output").html(data); 
      }); 
      } 
     } 

そしてのソースを。ただ、ここで返信されていない場合 - 私は十分にそれをよく説明している場合わからない

$("#tree").dynatree({ 
     initAjax: {url: "createTree.php", 
        data: {//key: "root", 
          // Optional arguments to append to the url 
          //mode: "all" 
          } 
        }, 

アリcreateTree.phpソース

<? 
$yourSavedData=''; //place here the data you have saved before 
$array=unserialize($yourSavedData); 
echo json_encode($array); 
?> 

:あなたは再びそれらを必要とするときに、これを使用しています。

あなたや他の人に役立つことを願っています。

+0

我々が必要としてI "M ..このプラグインのための全体のGoogleグループがツリー全体を保存する方法についての情報が含まれていません同じ情報を探している...非常に奇妙な –

-1

toDict()関数を使用してください。

ドキュメントから:

// Get a JavaScript object copy of the tree 
var dict = $("#tree").dynatree("getTree").toDict(); 
// ... then use Ajax to send this to your server... 
+0

それでは、このコードスニペットは文脈がなくてもほとんど役に立たないですが、以前の状態はどうでしたか?親は変わったのでしょうか?新しい位置は何ですか? –

関連する問題