【问题标题】:Extjs 4.2 TreeGrid collapse/expand node does not remove preceding nodeExtjs 4.2 TreeGrid 折叠/展开节点不删除前面的节点
【发布时间】:2015-07-24 19:27:54
【问题描述】:

我在 extjs 4.2 中有一个树形网格。我加载了一些数据。假设有一些孩子的 1 个节点。我展开节点,孩子们在那里。我折叠节点并再次展开它。在第二次展开之后,孩子们被复制了。以此类推,每次展开后,子代总是重复的。

还有其他人遇到过这种情况吗?

store.setRootNode(firstLevelNodesList);
store.getRootNode().appendChild(firstLevelNodesList);
store.getRootNode().expandChildren();

firstLevelNodesList 是一个节点列表(它们是正确构建的)。调用是在第一次打开一个带有网格的窗口时进行的。 stragen 行为是当我点击折叠/展开时

【问题讨论】:

  • 如何添加孩子?如果您正在创建一个组件并将其渲染到新节点中,您可能需要检查该节点是否为空
  • 我更新了问题

标签: javascript extjs


【解决方案1】:

所有配置都应该在Store中完成。

在你的例子中:

store.setRootNode(firstLevelNodesList);
store.getRootNode().appendChild(firstLevelNodesList);
store.getRootNode().expandChildren();

折叠和展开树后,您将获得根节点并附加另一个子节点。一遍又一遍。

这是我的树配置的工作原理:

Store配置

Ext.define('Items', {
    extend  : 'Ext.data.TreeStore',
    storeId : 'Items',
    model   : 'Item',
    autoLoad: false,
    autoSync: false,
    root: {
        expanded: false,
        text: 'items'//recurence data trough tree object for expanding. Check your json data. Can be different.
    },
    proxy:proxy//proxy definition
});

我只做一件事(示例):

        var treeUserStore = controller.getStore('Items');
        treeUserStore.load({
            callback: function (records, operation, success) {
                var userPanel = controller.getUserManagementPanel();//some grid panel
           userPanel.getRootNode().expand();//example.
            }});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2014-12-18
    • 2019-04-18
    • 2013-07-01
    相关资源
    最近更新 更多