2015-10-09 5 views

ответ

1

Метод AddField(...) возвращает добавленный шаблон поля (оно не еще есть тип).

Вы можете установить тип на поле шаблон:

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

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

Значение типа должно соответствовать имени типа поля - например, Single-Line Text, Rich Text, Grouped Droplist и т.д.

В зависимости от вашей безопасности, вы можете также необходимо добавить все это в SecurityDisabler.

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

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

Большое спасибо. 'xx.Type =" Однострочный текст ";' Я действительно отсутствовал. – Kamran

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");