Sitecore调用参数模板中的检查列表数据

时间:2015-04-10 20:01:37

标签: sitecore datasource

我有一个分配了“参数模板”的子布局。在参数模板中,有一些字段,如单文本,富文本和检查列表类型。在代码隐藏中调用单个和富文本字段时没有问题。但是,我不知道如何在检查列表字段中调用列表。

添加子布局时,我只想获取所选项目的信息。

enter image description here enter image description here

2 个答案:

答案 0 :(得分:2)

首先在参数模板上阅读

https://www.sitecore.net/learn/blogs/technical-blogs/martina-welander-sitecore-blog/posts/2013/07/improving-the-page-editor-experience-part-1-uses-for-parameters.aspx

然后设置一个基类来处理数据源和参数模板是很有用的。您可以根据此编写自己的基类:

https://marketplace.sitecore.net/en/Modules/Sub_Layout_Parameter_Helper.aspx

当你从子布局访问参数值时,它们将是原始值,在你的情况下是管道分隔的guid。

这是获取参数值的方法:

 var sublayout = this.Parent as Sublayout;

 var parameters = sublayout.Parameters;

 var collection = WebUtil.ParseUrlParameters(parameters);

 string images = collection["Images"];

变量图像将包含guids - 您必须在这些上使用Getitem()来检索通过拆分字符串选择的实际项目,如下所示:

var selectedItems = images.split('|');
List<Item> result = new List<Item>();

foreach (var itemId in selectedItems)
{
  Guid id = Guid.Empty;
  if (Guid.TryParse(itemId, out id))
  {
    var found = db.GetItem(new ID(id));
    if (found != null)
    {
      result.Add(found);
    }
  }
}

上面的列表现在将在子布局中指定所选项目

答案 1 :(得分:0)

我相信,Checklist字段类型只会存储所选项目信息。

您可以将字段强制转换为MultilistField,然后在其上调用GetItems()。这应该会返回所选项目的列表。