【发布时间】:2011-02-15 02:18:33
【问题描述】:
我想向 dijit.ree 添加一个新节点作为当前选定节点的兄弟节点。我找到了使用 ItemFileWriteStore 的 newItem 方法将新项目添加到树的示例代码(我是 dojo 新手),但新项目始终出现在树的底部。如何在指定位置添加到商店,特别是与当前选择对应的位置?欢迎提供示例代码的指针:)
谢谢, 拉里
【问题讨论】:
我想向 dijit.ree 添加一个新节点作为当前选定节点的兄弟节点。我找到了使用 ItemFileWriteStore 的 newItem 方法将新项目添加到树的示例代码(我是 dojo 新手),但新项目始终出现在树的底部。如何在指定位置添加到商店,特别是与当前选择对应的位置?欢迎提供示例代码的指针:)
谢谢, 拉里
【问题讨论】:
store.newItem 出现错误(未捕获的错误:dojo.data.ItemFileReadStore:无效的属性参数。)。到目前为止无法真正找到解决此问题的方法,而且我的商店没有重复的 ID。
因此我尝试使用 model.newItem(newItem, parentItem)。 这完全没问题。
谢谢, 斯里拉塔。
【讨论】:
我想通了;这是未来搜索者的答案。按照 Alex 的建议使用 newItem。然后使用 model.pasteItem 重新定位新项目。 pasteItem 需要一个父级 (selectedNode.item.parent[0]) 和一个位置 (selectedNode.getIndexInParent()+1)
拉里
【讨论】:
您需要找到当前选定节点的父项,并将该项用作新创建的项的父项。
store.newItem(itemObj, {parent : parentItem, attribute : children});
通常,商店中的项目没有指向其父项的反向指针。因此,您可能需要自己维护它。例如,您可以将父项的 id 存储在子项中,并使用fetchItemByIdentity 获取父项。
【讨论】: