private string GetRowXml(object dataItem, ContentList contentType, bool includeDefaults = true)
        {
            var valDict = dataItem.ToDictionary();
            var fields  = contentType.ReadFields();

            if (includeDefaults)
            {
                foreach (var f in fields)
                {
                    var defVal = f.DefaultValue;
                    if (valDict.ContainsKey(f.Name))
                    {
                        if (defVal != null)
                        {
                            if (!valDict.ContainsKey(f.Name))
                            {
                                valDict.Add(f.Name, defVal);
                            }
                            else
                            {
                                if (valDict[f.Name] == null)
                                {
                                    valDict[f.Name] = defVal;
                                }
                            }
                        }
                    }
                }
            }

            return(GenerateDataXml(valDict, contentType.Name, fields));
        }
Example #2
0
        /// <summary>
        /// Initializes a new instance of the ContentFieldCollection class.
        /// </summary>
        /// <param name="context">The data context</param>
        /// <param name="parent">The parent content list object.</param>
        public ContentFieldCollection(IDataContext context, ContentList parent)
        {
            this.DataContext = context;
            this.ParentList  = parent;

            if (!string.IsNullOrEmpty(parent.FieldsXml))
            {
                this.AddRange(parent.ReadFields());
                //var serializer = new XmlSerializer(typeof(ContentListElement));
                //using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(parent.ConfigXml)))
                //{
                //    var m = (ContentListElement)serializer.Deserialize(stream);

                //    var factory = new DefaultContentFieldFactory();
                //    foreach (var f in m.Fields)
                //    {
                //        var fieldInstance = factory.Create(f);
                //        fieldInstance.Parent = this.ParentList;
                //        this.Add(fieldInstance);
                //    }
                //}
            }
        }