expandpath-extjs treePanel.expandPath显示

问题描述

extjs treePanel.expandPath显示

我想通过treePanel.expandPath展开到1001010000这一级,但现在用expandPath只能显示到1xxx这一级。请问是什么原因??

网上没有找到答案。都说treePanel.expandPath(/0000/1XXX/1001000000/1001010000,‘id’,function(){})是可以的。

我的tree是异步加载的。和这有关系吗??

解决方案

如果没有效果,那么expandPath肯定是只对已经加载的树有效果,异步的数据还没有下载下来,ext不会自动帮你加载其他未下载的数据的,你可以看这个函数的源代码,没有处理异步数据的。你可以自己添加callback,判断下是否有数据然后自己用同步的ajax加载数据

     expandPath: function(path, field, separator, callback, scope) {
        var me = this,
            current = me.getRootNode(),
            index = 1,
            view = me.getView(),
            keys,
            expander;

        field = field || me.getRootNode().idProperty;
        separator = separator || '/';

        if (Ext.isEmpty(path)) {
            Ext.callback(callback, scope || me, [false, null]);
            return;
        }

        keys = path.split(separator);
        if (current.get(field) != keys[1]) {
            // invalid root
            Ext.callback(callback, scope || me, [false, current]);
            return;
        }

        expander = function(){
            if (++index === keys.length) {
                Ext.callback(callback, scope || me, [true, current]);
                return;
            }
            var node = current.findChild(field, keys[index]);
            if (!node) {
                Ext.callback(callback, scope || me, [false, current]);
                return;
            }
            current = node;
            current.expand(false, expander);
        };
        current.expand(false, expander);
    }

解决方案二:

我的代码是这样的,用单击事件确发此方法:
function queryJoinCourse(){
var path ='/0000/2XXX/2004000000';
treePanel.expandPath(path,'id')
}
当只单击一次时,此treePanel.expandPath(path,'id')方法只展开了第一级,也就是父节点为0000的,其余的/2XXX/2004000000但不会执行。

但,若连续单击3次,则第一次单击则展开0000级,第二次单击,展开2xxx级,第三次单击则到了2004000000。

请问这种情况是什么原因?但,若我将treePanel.expandPath(path,'id')放到循环时里,它也是不会执行的。

不会写了,请问这种情况怎么解决,能给我写一下大概代码吗?

时间: 2024-11-10 00:59:27

expandpath-extjs treePanel.expandPath显示的相关文章

extjs创建问题显示不正常

问题描述 extjs创建问题显示不正常 我用extjs创建一个FieldSet,当第一次创建form的时候 可以 正常显示,第二次就不行了,请高手帮忙看看为什么 谢谢,代码如下: var normalFieldSet = new Ext.form.FieldSet({ name: 'normalFieldSet', id: 'normalFieldSet', columnWidth:.33, layout:'form', xtype:'fieldset', autoHeight:true, st

extjs treepanel的问题

问题描述 各位,我这里遇到一个问题.首先我整个页面布局是:左边一个treepanel,右边一个iframe.我想实现的功能是点击左边的菜单节点,根据点击节点传过来的参数加载指定页面,而iframe里面我需要显示的也是extjs做的布局内容. 这里我不需要用tabpanel. 因为我不需要增加很多tab. 我只需要点击左边菜单节点,右边iframe实时响应结果.这种能在extjs里面实现吗? 问题补充:当时我第一反应就想到这种方法,但是如果点击一次就调用new一次extjs对象,而且又没有释放掉,

SSH+EXTJS前台不能显示数据?

问题描述 我是一个新手,最近碰到一个小问题,望有识之士能给与我解答!非常感谢!一个简单的问题,后台得到的数据通过前台显示,使用extjs4.其中extjs的代码如下:Ext.Loader.setConfig({enabled: true});Ext.Loader.setPath('Ext.ux', 'extjs/examples/ux/');Ext.require([ 'Ext.grid.*', 'Ext.data.*', 'Ext.util.*', 'Ext.tip.QuickTipManag

关于extjs treepanel复选框选中父节点与子节点的问题_extjs

 extjs 如图,实现带有复选框的树,选中父节点时,选中所有子节点.取消所有子节点时,才能取消根节点. 复制代码 代码如下: var Fpanel = new Ext.tree.TreePanel({ id:'ptree', region:'west', layout:'anchor', border:false, rootVisible: false, root:new Ext.tree.AsyncTreeNode({}), listeners:{ "checkchange": f

extjs TreePanel按住shift键多选

问题描述 如题,TreePanel有没有多选的属性,不要checkbox的那种. 解决方案 设置treePanel selModel : new Ext.tree.MultiSelectionModel() 属性即可默认是ctrl 键 重写 onNodeClick 函数 改成shift 键selModel : new Ext.tree.MultiSelectionModel({onNodeClick : function(node, e) {this.select(node, e, e.shif

EXTJS中 DateField 显示一半的解决方法

只显示了一半,巨郁闷. 在网络上查了一下是IE8的问题,说需要执行一堆JS. 解决方案: 放到DateField控件调用之前就可以.(或放到ext-all.js中) 1. Ext.isIE8 = Ext.isIE && navigator.userAgent.indexOf('MSIE 8') != -1; //这句一定要加,如果版本不支持isIE8属性的话 2. Ext.override(Ext.menu.Menu, { autoWidth: function () { var el =

如何获取 extjs treePanel节点 的 坐标 node.getPosition() 不行

问题描述 想获得 已知节点的坐标,试了 node.getPosition() 不行大家是用的什么方法呢 解决方案 Ext.get(node.getUI().getEl()).getXY(); 获取X Y坐标解决方案二:获得node节点做什么 再说api里没有getPosition() 方法

extjs viewport 为什么显示不出来滚动条啊

问题描述 Ext.BLANK_IMAGE_URL ='extjs3.3/ext-3.3.1/resources/images/default/s.gif'; Ext.onReady(function(){ var panel = new Ext.Panel({ layout :'table', header : true, hideBorders : true, collapsible : true, shadow : true, floating : false, frame : true,

Extjs TreePanel reload()后不让其自动展开树 求租~~~~

问题描述 每次我根据 系统类别 或者 区划代码 去刷新树的时候 我都是 root2.reload();root1.reload(): root1是事业单位..root2是行政机构 我在下拉事件里面 添加的这个刷新方法 但是每次刷新完 之后.. 树重新加载, 并且自动展开.. 我想问有没有什么办法不让他 自动展开(原因:展开的时候执行展开事件,但是我写了 展开事件 所以右侧有加载数据所以这样 刷新 又展开的话 相当 废资源) 解决方案 root.on('beforeexpand',function