2017-01-18 3 views
0

Ich erstelle meine ContentTypes und danach versuche ich, meine Felder zu erstellen.Legen Sie die Gruppe eines SpField-Elements programmgesteuert fest

ich curently an der Wand meinen Kopf bin schlagen, nach etwa für ein paar Stunden auf der Suche, wie die Gruppen zu bekommen, dass Sie Felder in platzieren können (überprüfen Bild, um zu sehen, was ich beziehe zu)

enter image description here

Kann jemand erklären, wie ich eine Liste dieser Gruppen von meinem Bild bekommen kann?

var web = _Ctx.Web; 
_Ctx.Load(web, w => w.ContentTypes, w => w.Fields); 
_Ctx.ExecuteQuery(); 

foreach (lavaPOINT_Page page in new PageAndFieldData().Pages) 
{ 
    if (!web.ContentTypes.ToList().Exists(i => i.Id.ToString() == page.ID)) 
    { 
     var spbt = web.ContentTypes.Add(new ContentTypeCreationInformation() 
     { 
      Name = page.Name, 
      Id = page.ID, 
      Group = page.Group, 
      Description = page.Group 
     }); 
     _Ctx.Load(spbt, f => f, f => f.Fields.Include(i => i.InternalName)); 
     _Ctx.ExecuteQuery(); 
    } 
} 

var fields = web.Fields; 
var Groups = ? // how do i get the Groups *?? 

foreach (var field in new PageAndFieldData().Fields) 
{ 
    var teaser = web.Fields.FirstOrDefault(i => i.InternalName == field.field_name); // if dont exist = create 

    if (teaser == null) 
    { 
     var fieldXml = "<Field Type=\"Note\" DisplayName=\"Teaser\" Required=\"FALSE\" EnforceUniqueValues=\"FALSE\" Indexed=\"FALSE\" NumLines=\"6\" RichText=\"FALSE\" Sortable=\"FALSE\" Group=\"Fields\" ID=\"{fdfba8f7-4521-4db4-b6c2-8ab88e065834}\" SourceID=\"{5119e221-4abe-4200-8d82-910db701336a}\" StaticName=\"NewsPageTeaser\" Name=\"NewsPageTeaser\" RestrictedMode=\"TRUE\" RichTextMode=\"Compatible\" IsolateStyles=\"FALSE\" AppendOnly=\"FALSE\" UnlimitedLengthInDocumentLibrary=\"FALSE\"></Field>"; 
     var spField = web.Fields.AddFieldAsXml(fieldXml, false, AddFieldOptions.DefaultValue); 

     //_Ctx.Load(spField); 
     //_Ctx.ExecuteQuery(); 
    } 

} 
+0

Sie können nicht alle Gruppen abrufen, aber Sie können die Gruppe für jedes Feld mithilfe der Eigenschaft 'Field.Group' ermitteln. –

Antwort

0

Ich habe einen Weg gefunden, alle Gruppen zu bekommen. Aber irgendwie ist es nicht das Beste.

var groups = fields.ToList().Select(i => i.Group).Distinct(); 
Verwandte Themen