2012-09-05 1 views
0

jstree는 이름을 바꿀 노드의 텍스트 만 반환하려고합니다. 대신, 모든 노드뿐만 아니라 현재 노드의 이름의 연결된 목록을 리턴합니다. jstree를 요청시로드하도록 구성했습니다. 컨텍스트 메뉴에서 반환 된 텍스트를 이름을 바꾸려는 노드로만 제한하려면 어떻게해야합니까? 매우 감사!JSTree의 data.rslt.obj.text()는 원하는 노드의 텍스트가 아닌 텍스트 배열을 반환합니다.

 $("#RequirementsTree") 
    .bind("select_node.jstree", function(event, data) { 
      if(is_requirement_node(data)) 
      { 
       var id = data.rslt.obj.attr("id"); 

       if(id != null) 
       { 
        $("#RequirementsTree").jstree('close_all') 
       } 
       else { 
        alert("Requirement node select error"); 
       } 
      } 
    }) 
    .bind("create.jstree", function(e, data) { 
     // Ajax call to Server with parent node id and new node text 
     $.ajax({ 
      type: "POST", 
      url: '@Url.Content("~/RMS/insertRequirementNode")', 
      data: { 
        ParentID : ParentNode, 
        ChildNodeText : data.rslt.obj.text() 
      }, 
      success: function(new_data) { 
       $.jstree._reference($("#RequirementsTree")).refresh(-1); 
       ParentNode = null; 
       data = null; 
       return new_data; 
      } 
     }); 

     ParentNode = null; 
     if (data.rslt.parent == -1) { 
      alert("Can not create new root directory"); 
      // Rollback/delete the newly created node 
      $.jstree.rollback(data.rlbk); 
      return; 
     } 

     BranchReqFLag = null; 
    }).bind("rename.jstree", function(e, data) { 
      $.ajax({ 
       type: "POST", 
       url: '@Url.Content("~/RMS/updateRMSHierarchyNode")', 
       data: { 
        NodeID: ParentNode, 
        NodeText: data.rslt.obj.text() 
       }, 
       success: function() { 
        ParentNode = null; 
        data = null; 
       } 
      }); 
    }).jstree({ 
     json_data: { 
      data: RBSTreeModel, 
      ajax: { 
       type: "POST", 
       data: function (n) { 
        return { 
         NodeID: n.attr("id").substring(4), 
         Level: n.attr("name").substring(7) 
        }; 
       }, 
       url: function (node) { 
        return "/Audit/GetRequirementsTreeStructure"; 
       }, 
       success: function (new_data) { 
        return new_data; 
       } 
      } 
     }, 
     contextmenu: { 
      items: function($node) { 
        return { 
         createItem : { 
          "label" : "Create New Branch", 
          "action" : function(obj) { 
           this.create(obj); 
           BranchReqFlag = "Branch"; 
           ParentNode = obj.attr("id").substring(4); 
          }, 
          "separator_before" : true 
         }, 
         renameItem : { 
          "label" : "Rename Branch", 
          "action" : function(obj) { 
           this.rename(obj); 
           BranchReqFlag = "Branch"; 
           ParentNode = obj.attr("id").substring(4); 
          }, 
          "separator_before" : true 
         } 
        }; 
      } 
     }, 
     plugins: ["themes", "json_data", "ui", "crrm", "contextmenu"] 
    }); 
}); 

답변

2

data.rslt.new_name가 입력 된 새로운 이름을 원하는 분야 여기에 전체 jstree 코드입니다. Chrome 또는 Firebug를 사용하여 data을 검사하면 이러한 종류의 질문에 대한 답을 찾을 수 있습니다.

... 
    }).bind("rename.jstree", function(e, data) { 
      $.ajax({ 
       type: "POST", 
       url: '@Url.Content("~/RMS/updateRMSHierarchyNode")', 
       data: { 
        NodeID: ParentNode, 
        NodeText: data.rslt.new_name 
       }, 
       success: function() { 
        ParentNode = null; 
        data = null; 
       } 
      }); 
    }) 
... 
+0

감사합니다. Chrome/Firebug를 사용하여 데이터를 면밀히 검토하는 데 대한 조언에 감사드립니다. – TheDude