我在 umbraco 论坛上看到过类似的帖子,但我读过的帖子都没有解决我的确切问题。
我有一个在发布节点时调用的操作处理程序。我希望操作处理程序做的最后一件事是从节点的父节点开始刷新内容树。
假设以下结构:
- Z
- 扎
- 子
- 祖
假设我发布节点“Zi”。我希望刷新“Z”文件夹(并在编辑器中选择“Zi”)。
这可能吗?
我最接近的是使用
umbraco.BasePages.BasePage.Current.ClientTools.SyncTree(doc.Parent.Path, true);
这确实刷新了树,但它也折叠了所有节点。我想在上面给出的示例中保持“Z”节点展开。
最佳答案
要保持子文件夹(Za、Zi、Zu)打开并突出显示 Zi,您应该通过 zi 的路径而不是 Z 的路径。这将刷新并突出显示 Zi,但它也会刷新 Z 的子树。
所以-
umbraco.BasePages.BasePage.Current.ClientTools.SyncTree(doc.Path, true);
如果 Z 没有刷新足够,那么您可以先为 Z 调用 SyncTree,然后为 Zi 调用 SyncTree。
umbraco.BasePages.BasePage.Current.ClientTools.SyncTree(doc.Path, true);
umbraco.BasePages.BasePage.Current.ClientTools.SyncTree(doc.Parent.Path, true);
最终这些调用在页面上以 javascript 的形式结束。 在 Umbraco 4.7.0 中(我还没有在任何更新的东西上尝试过)调用 -
UmbClientMgr.mainTree().syncTree('-1,1000,10001', true);SyncTree("-1,1000,1001", true);
- 结束为 -
UmbClientMgr.mainTree().syncTree('-1,1000,1001', true);
- 当页面 html 返回时在页面的 javascript 中。
因此直接输出该 javascript 而不是使用 UmbClientMgr 应该允许您放入多行。
在实践中调用父节点的路径将关闭父节点的子树并刷新父节点。对子节点的后续调用将展开父子树以显示并突出显示子节点。
关于c# - Umbraco - 从 Action 处理程序刷新内容树中节点的父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8955785/