2

在 Sitecore 中,我正在使用代码在内容编辑器中打开一个项目,在用户完成一些更改后,我想重新加载内容编辑器。我试图在 Sitecore Item:Locked 事件处理程序中执行此操作,我想知道是否可以引发 Sitecore 事件以便内容编辑器重新加载。

4

1 回答 1

1

首先,我认为这item:locked可能不是正确的事件,因为您想在用户完成更改后执行此操作。你看过item:saved活动吗?

其次,我不完全确定您要达到的目标是什么。是不是当任何用户进行更改时,内容编辑器或其他人的机器的实例需要重新加载?我不确定这是否可能。
或者您是否希望在用户进行更改时运行自定义代码,但随后用户需要重新加载自己的实例?
如果是后者,您可以尝试以下方法:

实际上,您可以做几件事:
重新加载项目
您可以使用以下内容重新加载项目:

string load = String.Concat( new object[] { "item:load(id=", myItem.ID, ",language=", myItem.Language, ",version=", myItem.Version, ")" });
Sitecore.Context.ClientPage.SendMessage(this, load);

重新加载内容编辑器
如果您确实想再次加载内容编辑器,您可以使用以下内容构建 URL:

string.Format("/sitecore/shell/sitecore/content/Applications/Content Editor.aspx
?id={0}&fo={0}&la={1}&ver={2}", GUID of the item to be selected, 
Language you want to display, version you want to display);

然后您可以将用户重定向到该页面(使用简单的Response.Redirect),或者您可以打开内容编辑器的新实例(如果您在桌面),例如使用Sitecore.Shell.Framework.Windows.RunApplication方法。

于 2013-08-21T08:09:46.923 回答