Exttree优化问题

每次加载树都要从数据库中读取数据,频繁去读取数据库,必然影响效率和性能,现在问题来了,我想第一次加载树从数据库中读取,以后进行的操作只做内存中读取,不在访问数据库,比如添加节点或者删除节点立刻在treePanel中显示,主要就是通过以上对节点的修改不会和数据库交互,在页面上加载被修改过的数据,这里用到的是那个方法,找了半天了都没找到!
可以一次加载,但是前提是一次性将所有数据查询出来然后返回到前台
首次加载后可以将rootVisible: false这样首次就自动加载数据,不用点击根节点才加载
修改页面数据即修改TreeNode即可,可以参考Ext.tree.TreeNode中的方法
增加是appendChild方法、修改内容是setText、删除是remove();

不是,你没明白意思,appendChild、remove这些方法就是不和后台数据库打交道的,就是appendChild添加一条数据不会直接添加到数据库的是在内存中寄存的,然后添加的这个节点就直接在treepanel中显示出来了,就是想知道它内部调用的什么方法就把tree显示出来了,看里面的源码,就一句node.render()起了一下作用,其他方法没看到,比如reload()的方法,就是加载树的,不过要访问后台的数据,我现在只想读取内存中的数据有什么吗?请教了

你appendChild的时候调用下ajax方法在后台添加一个数据即可,也不需要reload。因为你在前台已经添加了
后台用ajax方法,这样还可以提高效率
如果你直接用ajax方法添加一条记录的话,需要重新reload下
ajax方法参考2#

json树的话可以把操作全纪录在你前台的一个json串里,如果最后要修改就把json串传回后台解析操作
一次查询所有节点那就用同步树 然后页面上所有操作都是对json字符串操作
不知道这样行不行

还没人解决啊,看这行代码node.appendChild(new Ext.tree.TreeNode({id:"9",text:"sd"}));就可以直接添加树节点,与后台没有任何关系,就可以刷新树,显示出刚添加的节点,我想appendChild()中肯定调用了有刷新树和加载树的方法,并且这个方法还不与后台交互,我看过这个方法的源码,没发现这里面调用了有关刷新和加载树的方法,我想这个appendChild()方法肯定节点添加以后肯定触发了某个事件,在事件里调用了有关刷新和加载树的方法,本人没找到 api 也翻过了,不知道调用了什么方法,请高手进来帮忙解决一下!

你看代码不够仔细哈。
你光看了tree.js里面的node没有用啊。
实际上在画树节点的都是TreeNodeUI。

而且你理解上有错误哈,你调用appendChild()的时候,你看到节点画上去了,或者节点被删掉了,并不能表示整个树就刷新了啊?

可能我表达不好,对不住各位了

这样说吧,树第一次加载有一些数据,只是这些节点的排序我想改变一下,有一个节点我想让它移动到它兄弟的上面或者下面,我给每个节点加了一个属性num是int类型,以num属性排序,这时我在客户端把两个兄弟节点的序号改变一下,就会改变它们的排序,这时我把两个兄弟节点的num值改变了,就是想在客户端刷新或者加载改变顺序节点的父节点,如果父节点刷新或者客户端加载,顺序自然就改变了是吧!,就是找样的这个方法

来源:nba直播

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值