2013-04-05 6 views
2

Это мой код -TreePanel не расширяющиеся ExtJS 3

var myTree = { 
    containerScroll: "true", 
    width: 500, 
    root: new Ext.tree.AsyncTreeNode({ 
     id: "source", 
     text: "Root", 
     expanded: true, 
     draggable: true, 
     expandable: true 
    }), 
    loader: new Ext.tree.TreeLoader({ 
     dataUrl: 'page.php?action=Get_Tree', 
     preloadChildren: true, 
     expandAll: function() {} 
    }), 
    xtype: "treepanel", 
    loadMask: { 
     msg: 'Loading...' 
    }, 
    maskDisabled: false, 
    id: "tree", 
    listeners: { 
     click: function (node, event) { 
      // Render entity data in right panel 
      handleAction(node); 
     } 
    } 
} 

, когда пользователь щелкает на любом узле дерева, я выборки данных из БД и визуализации другой панели, используя handleAction метод. В моем случае мне нужно показать информацию о узле на другой панели и обновить ее. В обработчике обновления мне нужно изменить текст/id узла как обновленный.

Это прекрасно работает, но затем мне нужно обновить дерево, чтобы я мог просматривать обновленный узел. Но, это не работает для меня :(

Это мой код для обновления узла -.

var tree = Ext.getCmp('tree'); 
var id = req.responseText.split('#')[1]; 
var myId = 'Spec#' + entityId; 
var node = tree.getNodeById(myId); 
node.id = 'Spec#' + id; 
node.text = updated_spec_id; 
tree.enable(); 
tree.getLoader().dataUrl = 'page.php?todo=Get_Tree'; 
tree.getLoader().load(tree.root); 
// This I have tried but not succeed. 
tree.getView().refresh(); 
tree.expandAll(); 
node.expand(); 
tree.getRootNode().expand(true); 

Однако, когда я вручную расширить его с помощью мыши узел обновляется

. Пожалуйста, помогите Спасибо заранее

ответ

0

вы пробовали doLayout функцию Отрывок из док:..?

Если контейнер уже отображается при вызове add, вам может потребоваться вызвать doLayout, чтобы обновить представление, которое вызывает рендеринг любых незагруженных дочерних компонентов. Это необходимо, чтобы вы могли добавлять несколько дочерних компонентов, если это необходимо, только обновляя макет один раз.

Мне кажется, что ваше дерево нормальное поведение. Потому что вы использовали событие click, поэтому это событие срабатывает при нажатии узла.