2015-03-31 54 views
2

我已將菜單上下文項添加到TreelistEx。這個菜單項發送一個消息,我稍後在HandleMessage方法中捕獲。Sitecore:使用菜單上下文項後顯示輸入選項

在這種方法中,我創建一個新的項目(模板類型和父項在給出的排列列表字段中)。

我現在需要的是一種方法來詢問用戶名稱。但我一直無法找到一個簡單的方法來做到這一點。

enter image description here

class MyTreeListEx : TreelistEx, IMessageHandler 
{ 
    void IMessageHandler.HandleMessage(Message message) 
    { 
     if (message == null) 
     { return; } 

     if (message["id"] == null) 
     { return; } 

     if (!message["id"].Equals(ID)) 
     { return; } 

     switch (message.Name) 
     { 
      case "treelist:edit": 
       // call default treelist code 

      case "mytreelistex:add": 
       // my own code to create a new item 
     } 
    } 
} 

有沒有人對如何實現這一目標有什麼建議?

編輯:添加圖像&代碼+我使用Sitecore的8更新1

+0

你可以添加你的代碼給你的問題一些上下文 – 2015-03-31 09:55:09

回答

3

我不知道你使用的Sitecore的版本,但你可以嘗試是SheerResponse.Input方法。

您可以使用它像這樣:

using Sitecore.Configuration; 
using Sitecore.Globalization; 
using Sitecore.Shell.Applications.ContentEditor.FieldTypes; 
using Sitecore.Web.UI.Sheer; 

void IMessageHandler.HandleMessage(Message message) 
{ 
    ... 
    case "mytreelistex:add": 
     Sitecore.Context.ClientPage.Start(this, "AddItem"); 
     break; 
} 

protected static void AddItem(ClientPipelineArgs args) 
{ 
    if (args.IsPostBack) 
    { 
     if (!args.HasResult) 
      return; 
     string newItemName = args.Result; 
     // create new item here 

     // if you need refresh the page: 
     //SheerResponse.Eval("scForm.browser.getParentWindow(scForm.browser.getFrameElement(window).ownerDocument).location.reload(true)"); 
    } 
    else 
    { 
     SheerResponse.Input("Enter the name of the new item:", "New Item Default Name", Settings.ItemNameValidation, 
      Translate.Text("'$Input' is not a valid name."), Settings.MaxItemNameLength); 
     args.WaitForPostBack(); 
    } 
} 

此代碼甚至會爲不正確的字符和長度驗證新的項目名稱。

+0

我的課是服務器上的標準類。所以純粹的文本框在所有代碼執行之前都不會渲染。 – Timon 2015-03-31 10:22:53

+0

查看更新回答 – 2015-03-31 11:16:46

+0

是的,需要往返,例如Google Map字段,https://bitbucket.org/ndoeyaditya/sitecore-gmap-location-picker-field/src/6037878354ba374a8903faf0a1ae247a0440a007/MyApp.SitecoreCustom/GMapField/ GoogleMapField.cs?at = master SheerResponse正在Sitecore 8中工作, – 2015-03-31 11:31:25