添加节点并展开GXT Async TreePanel

时间:2011-03-22 15:47:36

标签: gwt gxt treepanel

我有一个Async TreePanel,它使用RPC代理从服务器加载数据。我想使用:

重新加载节点
this.treeLoader.loadChildren(nodeModel);

然后,我希望加载的树节点被扩展。我试着:

treePanel.setExpanded(nodeModel, true, false);

但是第一次调用是异步的,所以“setExpanded”在节点加载之前发生。

解决方案是在treeLoader上使用LoadListener并在加载子节点之后展开节点但是侦听器的loaderLoad(..)方法无法直接知道重新加载的原因:也许用户扩展了节点并且这会触发重新加载,或者用户点击菜单选项以重新加载节点。

有没有办法改进这一点,以便在用户想要重新加载节点后更容易触发节点扩展?

感谢。

2 个答案:

答案 0 :(得分:1)

尝试在loaderLoad方法中删除侦听器,并在loaderLoadException中删除以避免泄漏

答案 1 :(得分:0)

我建议存储被选中要重新加载的节点(向你添加一个onClick监听器)。比在loaderLoad中检查存储的对象是否等于加载节点的父节点:

loader.addLoadListener(new LoadListener() {
    @Override
    public void loaderLoad(LoadEvent loadEvent) {
        ModelData parent = loadEvent.getConfig();
        if(parent.equals(storedObject) {
            // your code here