Umbraco - 从动作处理程序中刷新内容树中节点的父节点

时间:2012-01-21 19:02:09

标签: c# umbraco

我在umbraco论坛上看过类似的帖子,但我读过的都没有解决我的确切问题。

我有一个在发布节点时调用的动作处理程序。我希望动作处理程序的最后一件事是刷新内容树,从节点的父节点开始。

假设以下结构:

  • ž

假设我发布了节点“Zi”。我想刷新“Z”文件夹(并在编辑器中选择“Zi”)。

这可能吗?

我最接近的是使用

umbraco.BasePages.BasePage.Current.ClientTools.SyncTree(doc.Parent.Path, true);

这确实刷新了树,但它也折叠了所有节点。我想在上面给出的例子中扩展“Z”节点。

1 个答案:

答案 0 :(得分:4)

要保持子文件夹( Za Zi Zu )打开并突出显示 Zi ,通过zi的路径而不是 Z 的路径。这将刷新并突出显示 Zi ,但它也会刷新 Z 的子树。

所以 -

umbraco.BasePages.BasePage.Current.ClientTools.SyncTree(doc.Path, true);

如果 Z 没有刷新那么您可以先调用SyncTree Z ,然后调用 Z

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应允许您放入多行。

实际上,调用父节点的路径将关闭父节点的子树并刷新父节点。对子节点的后续调用将扩展父子树以显示并突出显示子节点。