zoukankan      html  css  js  c++  java
  • extjs4 TreeStore Load()方法调用

        extjs4.0 tree的刷新问题困扰了我好一段时间,看官方的例子,看api,百度谷歌是一顿搜索,但是始终不得其解。因为是要对树进行增删改的操作,所以想到只要我 点了保存按钮,我让tree一次性刷新岂不是很方便的事情。treestore.load(),多方便啊,可是事实总不如愿,我是有多少节点,它就给我刷 新多少次啊。去百度查,有人说load()里面是需要参数的,你想刷新哪个点就把哪个节点放进去。。。结果依然如旧。然后就是看treestore方法的 各种源码,当然看不太懂,总好过瞎比划。后来想到折中的办法了。

            我不是要最树进行增删改么,我就用treestore.getRootNode()或者treestore.getRootById(object id).这两个方法的返回值是Ext.data.NodeInterface.这个对象是有insert,remove方法的,可以对获取到的节点的子节 点进行操作。

           所以啊,如果我对tree添加了一个节点,那我就先根据id找到它的父节点,然后在调用( Number index, Ext.data.Model node ) 或者( Node node, Node refNode, Object suppressEvents ) 方法进行添加。删除呢就是同样的找到父节点再调用( Node node, Boolean destroy, Object suppressEvents, Object suppressNodeUpdate )方法就OK。修改呢就调用( Node newChild, Node oldChild, Object suppressEvents )。这个如果对于简单的tree来说还好办,但是如果tree数据量大,层数多,逻辑复杂的就不好整了,反正后来我是自己整迷糊了。

        再后来,又回归原点,想整个刷新,一劳永逸,又是各种问,还真让我问到了。。。就是重写treestore.load()方法

    Ext.override(Ext.data.TreeStore, {
        load : function(options) {
            options = options || {};
            options.params = options.params || {};

            var me = this, node = options.node || me.tree.getRootNode(), root;

            // If there is not a node it means the user hasnt defined a rootnode
            // yet. In this case lets just
            // create one for them.
            if (!node) {
                node = me.setRootNode( {
                    expanded : true
                });
            }

            if (me.clearOnLoad) {
                node.removeAll(false);
            }

            Ext.applyIf(options, {
                node : node
            });
            options.params[me.nodeParam] = node ? node.getId() : 'root';

            if (node) {
                node.set('loading', true);
            }
            return me.callParent( [ options ]);
        }
    });

  • 相关阅读:
    CentOS6.5升级内核到3.10.28的记录
    redis集群搭建,手把手教学
    zookeeper集群搭建,这一篇就够了
    Caused by: java.sql.SQLException: Column 'show_type' not found
    zkEnv.sh: Syntax error: "(" unexpected (expecting "fi")记录一下解决方法。。。
    http分层
    浏览器
    less
    333
    CSS 解决方案
  • 原文地址:https://www.cnblogs.com/zhangxb/p/2411069.html
Copyright © 2011-2022 走看看