public void ContentList_AddField() { string listDef = @"<?xml version='1.0' encoding='utf-8'?> <ContentListDefinition xmlns='http://schemas.sensenet.com/SenseNet/ContentRepository/ContentListDefinition'> <DisplayName>Cars title</DisplayName> <Description>Cars description</Description> <Icon>automobile.gif</Icon> <Fields> <ContentListField name='#ListField1' type='ShortText'> <DisplayName>ContentListField1</DisplayName> <Description>ContentListField1 Description</Description> <Icon>icon.gif</Icon> <Configuration> <MaxLength>100</MaxLength> </Configuration> </ContentListField> <ContentListField name='#ListField2' type='WhoAndWhen'> <DisplayName>ContentListField2</DisplayName> <Description>ContentListField2 Description</Description> <Icon>icon.gif</Icon> <Configuration> </Configuration> </ContentListField> <ContentListField name='#ListField3' type='ShortText'> <DisplayName>ContentListField3</DisplayName> <Description>ContentListField3 Description</Description> <Icon>icon.gif</Icon> <Configuration> <MaxLength>200</MaxLength> </Configuration> </ContentListField> </Fields> </ContentListDefinition> "; string path = RepositoryPath.Combine(this.TestRoot.Path, "Cars"); if (Node.Exists(path)) Node.ForceDelete(path); var list = new ContentList(this.TestRoot) { Name = "Cars", ContentListDefinition = listDef, AllowedChildTypes = new ContentType[] { ContentType.GetByName("Car") } }; list.Save(); Node car = new GenericContent(list, "Car"); car.Name = "Kispolszki"; car["#String_0"] = "ABC 34-78"; car.Save(); list = Node.Load<ContentList>(list.Path); var fs = new ShortTextFieldSetting { Name = "#NewField", ShortName = "ShortText", MaxLength = 100, MinLength = 10, DisplayName = "New field title" }; list.AddField(fs); var cc = Content.Load(car.Path); Assert.IsTrue(cc.Fields.ContainsKey(fs.Name)); }
private Dictionary<string, string> CreateNonExistentListFields(string contentTypeName, Node parent, Dictionary<string, string> fieldData) { var nonExistentListFields = new Dictionary<string, string>(); if (parent is ContentList) { var cList = parent as ContentList; ContentType cType = ContentType.GetByName(contentTypeName); foreach (KeyValuePair<string, string> fData in fieldData) { if (!IsFieldOnCTD(cType.FieldSettings, fData.Key)) { var fSetting = new ShortTextFieldSetting { Name = string.Format("#{0}", fData.Key), ShortName = "ShortText", DisplayName = fData.Key }; if (!IsFieldOnList(cList.FieldSettingContents, fData.Key)) cList.AddField(fSetting); nonExistentListFields.Add(fData.Key, fData.Value); } } cList.Save(SavingMode.KeepVersion); } return nonExistentListFields; }