如何在Sitecore中为多列表创建动态源?

如何在Sitecore中为多列表创建动态源?,sitecore,sitecore6,Sitecore,Sitecore6,我有以下内容树结构: 家 产品 产品A 产品B 组织机构 组织1 组织2 组织配置X 组织结构 组织下的每个组织都有一个名为“关联产品”的字段,该字段是一个多列表。这会告诉系统哪些产品适合每个组织。组织配置数据模板有一个名为“选定产品”的字段。当我添加新的组织配置内容项(始终位于组织的正下方)时,我希望能够将显示在“选定产品”字段(多列表)中的项目限制为仅显示已与父组织关联的产品。我想可能有一种方法可以通过Sitecore查询实现这一点,但我想不出来。有什么想法吗?我想您可能

我有以下内容树结构:

    • 产品
      • 产品A
      • 产品B
    • 组织机构
      • 组织1
      • 组织2
        • 组织配置X
        • 组织结构

组织下的每个组织都有一个名为“关联产品”的字段,该字段是一个多列表。这会告诉系统哪些产品适合每个组织。组织配置数据模板有一个名为“选定产品”的字段。当我添加新的组织配置内容项(始终位于组织的正下方)时,我希望能够将显示在“选定产品”字段(多列表)中的项目限制为仅显示已与父组织关联的产品。我想可能有一种方法可以通过Sitecore查询实现这一点,但我想不出来。有什么想法吗?

我想您可能需要为此创建一个自定义字段。以下是一些与该主题相关的文章:


    • 在Sitecore的帮助下,我找到了答案。基本上,您必须创建一个从MultilistEx继承的自定义控件。然后需要重写DoRender()事件。在调用base.DoRender()之前,必须更改源(this.source)以使用Sitecore查询。之前,我尝试在OnLoad事件中执行此操作。现在我的代码如下所示:

      public class CustomMultiList : MultilistEx
      {
        private void ExcludeItems()
        {
          ...custom code here that builds a list of Item IDs to exclude from the Multilist source...
          ...list should look like this "@@id != 'some guid' and @@id != 'some guid' and so forth...
          ...you could also build a list of item ids to include. Any Sitecore query will do...
          ...you can use this.ItemID to get a reference to the current item that is being edited in the Content Editor...
      
          this.Source = "query:" + this.Source + "/*[" + myListOfItemIdsToExclude + "]";
        }
      
        protected override void DoRender(output)
        {
          this.ExcludeItems();
          base.DoRender(output);
        }
      }
      

      不知道你为什么会被否决,这是一个很好的方法,可以在不影响其他Sitecore类型的情况下实现它。。。这也是一个很好的方法。