在Sitecore中,我使用代码在内容编辑器中打开一个项目,在用户完成一些更改后,我想重新加载内容编辑器。我试图在Sitecore项目中执行此操作:锁定事件处理程序,我想知道我是否可以引发Sitecore事件,以便内容编辑器重新加载。
答案 0 :(得分: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
方法。