4

我有以下内容树结构:

    • 产品
      • 产品A
      • 产品B
    • 组织
      • 组织 1
      • 组织 2
        • 组织配置 X
        • 组织配置 Y

组织下的每个组织都有一个名为“关联产品”的字段,它是一个多列表。这告诉系统每个组织都有哪些产品。Org Config 数据模板有一个名为“Selected Products”的字段。当我添加一个新的组织配置内容项(它始终位于组织的正下方)时,我希望能够限制在“选定产品”字段(这是一个多列表)中显示的项目,以仅显示以下产品已与父组织关联。我在想可能有一种方法可以用 Sitecore Query 做到这一点,但我想不通。有任何想法吗?

4

2 回答 2

2

在 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);
  }
}
于 2013-05-14T14:33:54.623 回答