我有一個純粹的UI嚮導,它收集用戶的信息,然後在sitecore中創建一個內容項目。嚮導使用命令模板啓動。如何在Sitecore內容編輯器中選擇項目
我想讓嚮導在內容編輯器中將新創建的內容項目製作爲當前選定的項目,但我無法弄清楚如何執行此操作。有誰知道這是如何完成的?
更新
Trayek的建議已經得到了我遠一點。現在我已經得到了在命令下面的代碼,我用它來啓動向導:
[Serializable]
public class MyNewContentCommand : Command
{
public override void Execute(CommandContext context)
{
ClientPipelineArgs args = new ClientPipelineArgs();
args.Parameters["id"] = context.Parameters["id"];
Context.ClientPage.Start(this, "Run", args);
}
protected void Run(ClientPipelineArgs args)
{
if (!args.IsPostBack)
{
// This runs when the users clicks to add the item
// in the content editor.
// Launches a modal wizard to collect user data
string id = args.Parameters["id"];
string controlUrl = Sitecore.UIUtil.GetUri("control:MyNewItemWizard");
UrlString urlStr = new UrlString(controlUrl);
urlStr.Append("id", id);
SheerResponse.ShowModalDialog(urlStr.ToString(), true);
args.WaitForPostBack();
}
else if (args.HasResult)
{
// This runs once the wizard has finished
// Wizard passes ID of created item in its result
// This is used to find the newly created item.
Item created = Client.GetItemNotNull(ID.Parse(args.Result));
// Sending these messages result in refreshing the child items
// of the parent. And they work.
Context.ClientPage.SendMessage(this, string.Format("item:updated(id={0})", created.Parent.ID));
Context.ClientPage.SendMessage(this, string.Format("item:refreshchildren(id={0})", created.Parent.ID));
// This message should select the new item in content editor, but
// it doesn't have the desired effect.
Context.ClientPage.SendMessage(this, string.Format("item:load(id={0})", (object)created.ID));
}
}
}
如果這是一個有效的答案,那麼爲了上帝的緣故吧! – cwallenpoole 2013-06-14 13:42:22