如何刷新GWT中的TreeGrid?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何刷新GWT中的TreeGrid?相关的知识,希望对你有一定的参考价值。

你好朋友我正在开发一个GWT应用程序,我正在使用TreeGrid。当我在这个矿类中使用常规网格时:

RpcProxy<ListLoadResult<GwtDatastoreAsset>> proxy = new RpcProxy<ListLoadResult<GwtDatastoreAsset>>() {

            @Override
            protected void load(Object loadConfig, AsyncCallback<ListLoadResult<GwtDatastoreAsset>> callback) {
                if (selectedDevice != null) {
                dataService.findAssets((LoadConfig) loadConfig, currentSession.getSelectedAccount().getId(), selectedDevice, callback);
                }
            }
        };

        loader = new BaseListLoader<ListLoadResult<GwtDatastoreAsset>>(proxy);
        loader.load();
        SwappableListStore<GwtDatastoreAsset> store = new SwappableListStore<GwtDatastoreAsset>(loader);
        assetGrid = new Grid<GwtDatastoreAsset>(store, new ColumnModel(configs));
        assetGrid.setBorders(false);
        assetGrid.setStateful(false);
        assetGrid.setLoadMask(true);
        assetGrid.setStripeRows(true);
        assetGrid.getView().setAutoFill(true);
        assetGrid.getView().setEmptyText(MSGS.assetTableEmptyText());
        assetGrid.disableTextSelection(false);

在我的刷新方法的这个类中,我只做assetGrid.getStore()。getLoader()。load();就是这样,但是对于TreeGrid,我不能这样做。这是我使用TreeGrid的方法:

 AsyncCallback<List<GwtTopic>> topicsCallback = new AsyncCallback<List<GwtTopic>>() {

            @Override
            public void onSuccess(List<GwtTopic> topics) {
                store.add(topics, true);
                topicInfoGrid.unmask();
            }

            @Override
            public void onFailure(Throwable t) {
                FailureHandler.handle(t);
                topicInfoGrid.unmask();
            }
        };
        dataService.findTopicsTree(currentSession.getSelectedAccount().getId(), topicsCallback);
        topicInfoGrid = new TreeGrid<GwtTopic>(store, new ColumnModel(configs));
        topicInfoGrid.setBorders(false);
        topicInfoGrid.setStateful(false);
        topicInfoGrid.setLoadMask(true);
        topicInfoGrid.mask("Loading");
        topicInfoGrid.setStripeRows(true);
        topicInfoGrid.getView().setAutoFill(true);
        topicInfoGrid.getView().setEmptyText(MSGS.topicInfoGridEmptyText());
        topicInfoGrid.disableTextSelection(false);

所以我的问题是如何为TreeGrid制作刷新方法,就像我使用常规网格一样。

答案

TreeGrids有自己的加载器,称为TreeLoader,而不是使用商店的加载器:https://docs.sencha.com/gxt/3.x/javadoc/com/sencha/gxt/widget/core/client/treegrid/TreeGrid.html#setTreeLoader(com.sencha.gxt.data.shared.loader.TreeLoader)

另一答案

尝试在onSuccess方法之后添加:

topicInfoGrid.getTreeView().refresh(true);

或者如果刷新不起作用

 topicInfoGrid.reconfigure(store, cm, treeColumn);

以上是关于如何刷新GWT中的TreeGrid?的主要内容,如果未能解决你的问题,请参考以下文章

datagrid,treegrid携带参数刷新示例

如何在GWT中更新后刷新网格?

angularjs怎么控制页面局部刷新treegrid

当另一个片段中的数据发生更改时,如何刷新一个片段中的 RecyclerView

如何刷新片段中的onBindViewHolder方法

如何刷新其活动的 MenuitemSelected 上的片段?