树节点的重复
Posted
技术标签:
【中文标题】树节点的重复【英文标题】:Duplicate of tree node 【发布时间】:2014-02-07 18:31:56 【问题描述】:我已经阅读了很多关于树形面板的投诉,现在我遇到了一些问题。
首先是 treegrid 中的分页无法正常工作。我在另一个帖子中找到了一个不起作用的解决方案,所以我正在尝试为每个人修复它。
第二个是我需要帮助的地方。第一次展开父节点时,它会调用服务器并正确显示子节点。但是,当我折叠然后再次展开它时,它会绘制同一个孩子两次。树崩溃,显示此错误:
Uncaught TypeError: Cannot read property 'internalId' of undefined
经过处理,我发现问题不在它再次插入的时候,而在beforeitemexpand
函数。两次追加同一个子节点,导致 js 和 treestore
包含 2 个具有相同 internalId
的节点,进而导致崩溃。
有什么想法吗?
【问题讨论】:
【参考方案1】:树存储的工作方式有点复杂。我怀疑您遇到的问题与您的树商店正在存储的 models 的 idProperty 有关。
我也遇到了这些问题。我发现你不能在树的多个地方有两个具有相同身份的记录。例如,如果您的树代表一个文件系统,并且您将同一个文件复制到两个目录中。如果您的文件有一个 idProperty(默认设置为 id),那么无论它在树中的路径如何,商店都会将您的文件模型放入一个以 id 为键的散列中。
建议的解决方案是根本不设置 id(对于可编辑的树网格来说不是一个很好的解决方案),或者设置一个复合键,将整个节点链考虑到被授予者的根树中的唯一性。
一旦你解决了这些问题,树就会很好地工作。哦,还有分页树......不要认为这会很快发生,已经问过了。
【讨论】:
嘿dbring,感谢您的回答!,我看到的问题是它调用了两次来扩展,也许它与id有关,但我从未配置节点的id,并且它仍然重复相同...我在这方面工作了 3 天,但我无法解决这个问题:( 您将不得不发布一些代码或更好的 jsfiddle 来展示您的行为以上是关于树节点的重复的主要内容,如果未能解决你的问题,请参考以下文章