2014-09-11 77 views
2

我想知道如何將Droplink鏈接到Treelist中的選定項目。 我有一個字段Theme,這是Treelist,和字段MasterTheme,這是Droplink如何鏈接一個下拉鍊接到Sitecore中的Treelist

我應該能夠在Droplink中選擇一個主題 - 主題,其中填充了從Treelist中選擇的數據。

我對Sitecore很陌生,對自定義類不熟悉。

回答

10

您可以使用getLookupSourceItems -plineline。使用Droplink,您可以指定Sitecore查詢作爲源。通過getLookupSourceItems,您可以在運行時更改源代碼。以下處理器將檢查Treelist中選擇的項目,並創建一個Sitecore查詢,其中包含Treelist中選擇的所有項目。

public class LookupItemsFromField 
{ 
    private const string FromFieldParam = "fromfield"; 

    public void Process(GetLookupSourceItemsArgs args) 
    { 
     // check if "fromfield" is available in the source 
     if (!args.Source.Contains(FromFieldParam)) 
     { 
      return; 
     } 

     // get the field 
     var parameters = Sitecore.Web.WebUtil.ParseUrlParameters(args.Source); 
     var fieldName = parameters[FromFieldParam]; 

     // set the source to a query with all items from the other field included 
     var items = args.Item[fieldName].Split('|'); 
     args.Source = this.GetDataSource(items); 
    } 

    private string GetDataSource(IList<string> items) 
    { 
     if (!items.Any()) return string.Empty; 

     var query = items.Aggregate(string.Empty, (current, itemId) => current + string.Format(" or @@id='{0}'", itemId)); 
     return string.Format("query://*[{0}]", query.Substring(" or ".Length)); 
    } 
} 

你指定哪個字段是Droplink源中的「源」字段fromfield=<SourceField>

enter image description here

在最後你需要配置該流水線處理器:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> 
    <sitecore> 
    <pipelines> 
     <getLookupSourceItems> 
     <processor patch:before="processor[1]" 
        type="Website.LookupItemsFromField, Website" /> 
     </getLookupSourceItems> 
    </pipelines> 
    </sitecore> 
</configuration> 
+0

嘿,這真的有竅門!謝謝您的幫助! – 2014-09-11 11:53:41