Sitecore如何在Template.AddField(string,string)添加字段时指定数据字段类型;

时间:2015-10-09 10:30:54

标签: sitecore sitecore7.2

如果我有Sitecore项目item,我使用以下方法向其添加数据字段“我的字段”:

 item.Template.AddField("My Field", "Data");

如何为其指定字段类型。例如Single-Line Text

2 个答案:

答案 0 :(得分:1)

AddField(...)方法返回添加的模板字段(它还没有类型)。

然后,您可以在模板字段中设置类型:

var templateField = item.Template.AddField("Field name", "Section name");

using (new EditContext(templateField.InnerItem)) {
    templateField.Type = "Single-Line Text";
}

类型值应对应于字段类型的名称 - 例如Single-Line TextRich TextGrouped Droplist等。

根据您的安全性,您可能还需要在SecurityDisabler中添加整个内容。

using (new SecurityDisabler()) {
    var templateField = item.Template.AddField("Field name", "Section name");

    using (new EditContext(templateField.InnerItem)) {
        templateField.Type = "Single-Line Text";
    }
}

答案 1 :(得分:0)

请尝试使用下一个代码:

 private void AddFieldToTemplate(string fieldName, string templatePath)
{
    const string templateOftemplateFieldId = "{453A3E98-FD4G-AGBF-EFTE-E683A0331AC7}";

    // this will do on your "master" database, consider Sitecore.Context.Database if you need "web"
    var templateItem = Sitecore.Configuration.Factory.GetDatabase("master").GetItem(tempatePath);
    if (templateItem != null)
    {
        var templateSection = templateItem.Children.FirstOrDefault(i => i.Template.Name == "Template section");
        if (templateSection != null)
        {
            var newField = templateSection.Add(fieldName, new TemplateID(new ID(templateOftemplateFieldId)));
            using (new EditContext(newField))
            {
                newField["Type"] = "Text"; // text stands for single-line lext field type
            }
        }
        else
        { 
          add a new section template here 
        }
    }
}

您将使用下一行代码添加新字段:

  AddFieldToTemplate("New field","/sitecore/templates/Sample/Sample Item");