Sitecore如何在数据源中显示项目字段而不是项目名称

时间:2016-06-29 14:10:00

标签: sitecore sitecore7

在templateItem中,我有一个字段的以下信息。

Name : Product type
field type : 'Droplink' 
DataSource : DataSource=/sitecore/content/Enumerations/Products/Product type/

当内容编辑器根据上述模板创建项目时,对于字段' Product type'在下拉菜单中,他会看到../Product type下的项目。我的问题是,在下拉列表中显示的项目如何显示其他字段而不是项目名称

1 个答案:

答案 0 :(得分:5)

此功能不是开箱即用的,虽然DropLink字段的代码看起来像有代码可以执行此操作(请查看GetItemHeader()中的Sitecore.Shell.Applications.ContentEditor.LookupEx方法),我不知道如何通过内容编辑器使用参数...

创建自定义字段以实现此目的很简单:

using Sitecore;
using Sitecore.Data.Items;
using Sitecore.Shell.Applications.ContentEditor;

namespace MyProject.Custom.Fields
{
    public class CustomDropLink : LookupEx
    {
        protected override string GetItemHeader(Item item)
        {
            if (string.IsNullOrEmpty(this.FieldName))
                this.FieldName = StringUtil.ExtractParameter("FieldName", this.Source).Trim();

            return base.GetItemHeader(item);
        }
    }
}

然后在core下的/sitecore/system/Field types/数据库中注册您的自定义类。您可以通过复制/sitecore/system/Field types/Link Types/Droplink并设置以下值来执行此操作:

Assembly: MyProject.Custom
Class: MyProject.Custom.Fields.CustomDropLink
Control: <set this to empty>

然后,当您使用此字段时,请设置字段的来源,如下所示:

Datasource=/sitecore/content/path/to/items&FieldName=Title