Sitecore 自定义控件 - 根据第二个控件的值进行更新

问题描述 投票:0回答:1

我需要在 Sitecore 中创建一种新型控件。我们的 CE 希望能够根据位置进行卡片过滤。为此,我们创建了三个位置列表:州、国家/地区和南美洲位置。每个位置都是 sitecore 中的一个文件夹,下面有一个名称/值对项列表,代表位置。

例如:

  • 国家
    • 阿拉斯加
    • 亚利桑那州
    • 阿肯色州
    • ...
  • 国家
    • 加拿大
    • 美国
    • ...
  • 南美洲地点
    • 巴西
    • 秘鲁
    • 智利

当 CE 将组件添加到页面时,他们应该获得一个树列表,以允许他们选择“位置”列表文件夹。一旦他们选择了该文件夹,下面的项目列表就会出现 该位置文件夹应显示在多选列表中。

问题是我无法弄清楚如何根据所选的“位置”列表文件夹刷新多选列表。现在,当组件工作时,正确的州列表会加载到多选中,但如果我选择国家/地区,则不会加载国家/地区列表。

这基本上就是我现在所拥有的:

public class DynamicMultilist : MultilistEx
{
    private void RenderList(Guid listItemGuid)
    {
        Item listItem = GetListItem(listItemGuid, "master");
        this.Source = string.Format("query:{0}/*", listItem.Paths.FullPath);
        // ... Instantiate html writer
        DoRender(writer);
    }

    protected override void DoRender(HtmlTextWriter output)
    {
        base.DoRender(output);
    }

    public override void HandleMessage(Message message)
    {
        if (message.Name == "datacontext:changed")
        {
            string guid = (message.Sender as DataContext).Folder;
            // ... Convert string above to Item
            RenderList(listItem);
        }
    }
}
controls sitecore
1个回答
0
投票

几年前,当我遇到类似的需求时,没有办法用两个单独的字段来实现这一点,因为 CE 控件彼此不了解任何信息。

您可以尝试的选项之一是使用

Droptree
Grouped Droplink
Treelist
字段类型来显示树结构。尝试一下,看看哪一种更适合您的条目数量。这种方法允许您仅存储选定的子项目 ID,同时向内容编辑器显示分组视图。如果我正确理解您的内容结构,您将能够从代码中选定的子项目中识别父文件夹 ID,即使它不会存储在专用字段中。

© www.soinside.com 2019 - 2024. All rights reserved.