Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 4树面板重新加载和展开_Extjs_Tree_Load_Extjs4 - Fatal编程技术网

Extjs 4树面板重新加载和展开

Extjs 4树面板重新加载和展开,extjs,tree,load,extjs4,Extjs,Tree,Load,Extjs4,我正在使用带有Json数据的Extjs4树面板。我想重新加载树面板,并需要将树菜单扩展到指定的节点。 我正在使用以下代码。请让我知道怎么做 //Define tree store var store = Ext.create('Ext.data.TreeStore', { proxy: { type: 'ajax', url: 'my_tree.php', }, noCache: false }); // Treepanel var

我正在使用带有Json数据的Extjs4树面板。我想重新加载树面板,并需要将树菜单扩展到指定的节点。 我正在使用以下代码。请让我知道怎么做

//Define tree store

var store = Ext.create('Ext.data.TreeStore', {
    proxy: {
        type: 'ajax',
        url: 'my_tree.php',
    },

    noCache: false
});

// Treepanel
var treePanel = Ext.create('Ext.tree.Panel', {
    id: 'mytree',
    renderTo: 'tree_div',
    height: 400,
    bodyBorder: false,
    border: false,
    singleExpand: true,
    rootVisible: false,
    store: store,
    useArrows: true
});

//Reload tree
    function reload_tree(){
       var tree_panel = Ext.getCmp('mytree');
        tree_panel.enable();
        tree_panel.getLoader().dataUrl = 'my_tree.php';
       tree_panel.getLoader().load(tree_panel.root);
       //Expand tree node
       tree_panel.getLoader().on('load', function(loader, node){ 
              tree_panel.getNodeById(nodeid).expand();
    //here node id is tree menu nodeid 
   });
   } 

提前感谢

重新加载树我认为只需打电话就可以了

treePanel.getStore().load();
然后,您可以监听load事件,以便获取所有数据,最后从中选择所需的节点

    treePanel.on("load", function( treeStore, records, successful, operation)){

    var id = 4; // This is the ID of the node that somehow you know in advance
    var node = treeStore.getNodeById(id);

    treePanel.expandPath(node.getPath());
});

重新加载树我认为只需调用

treePanel.getStore().load();
然后,您可以监听load事件,以便获取所有数据,最后从中选择所需的节点

    treePanel.on("load", function( treeStore, records, successful, operation)){

    var id = 4; // This is the ID of the node that somehow you know in advance
    var node = treeStore.getNodeById(id);

    treePanel.expandPath(node.getPath());
});

感谢您的快速重播。treepanel加载正常,但没有扩展,在firebug中显示错误节点。getPath不是一个函数。哦,糟糕,很抱歉getPath在ExtJS 4中消失了,尽管您有其他方法来扩展所需的节点,请在这篇文章中查看Molecular Man的答案。。谢谢,非常感谢。它很好用。节点的扩展正是我所期望的,但它不是selectedstyle影响的。通常,如果选定的任何treemunu节点具有某些不同的选定样式。你能帮我吗?之前在Exts2.0中,我使用tree_panel.getNodeByIdnodeid.ensureavible;tree_panel.getNodeByIdnodeid.select;展开后选择节点,如果找到要选择的记录的索引,可以使用var selNodeIndex=0;var record=tree_panel.getRootNode.getChildAtselNodeIndex;tree.getSelectionModel.selectrecord;如果你不能,那么,通过商店,试着通过id获取记录,然后将记录传递给tree.getSelectionModel.selectrecord;感谢您的快速重播。treepanel加载正常,但没有扩展,在firebug中显示错误节点。getPath不是一个函数。哦,糟糕,很抱歉getPath在ExtJS 4中消失了,尽管您有其他方法来扩展所需的节点,请在这篇文章中查看Molecular Man的答案。。谢谢,非常感谢。它很好用。节点的扩展正是我所期望的,但它不是selectedstyle影响的。通常,如果选定的任何treemunu节点具有某些不同的选定样式。你能帮我吗?之前在Exts2.0中,我使用tree_panel.getNodeByIdnodeid.ensureavible;tree_panel.getNodeByIdnodeid.select;展开后选择节点,如果找到要选择的记录的索引,可以使用var selNodeIndex=0;var record=tree_panel.getRootNode.getChildAtselNodeIndex;tree.getSelectionModel.selectrecord;如果你不能,那么,通过商店,试着通过id获取记录,然后将记录传递给tree.getSelectionModel.selectrecord;