private static void ExportField(XmlDocument doc, XmlElement f, Field field) { switch (field.FieldType) { case FieldType.Url: UrlProperty uprop = (UrlProperty)field.Data; switch (uprop.Type) { case UrlType.File: doc.AddAttribute(f, new XmlAttributeElement("method", "file")); break; case UrlType.Folder: doc.AddAttribute(f, new XmlAttributeElement("method", "folder")); break; case UrlType.Url: doc.AddAttribute(f, new XmlAttributeElement("method", "url")); break; } break; case FieldType.Text: if (field.DefaultValue.Enabled) { doc.AddAttribute(f, new XmlAttributeElement("default", field.DefaultValue.AsText, string.Empty)); } break; case FieldType.Select: List <string> sc = (List <string>)field.Data; string selectValues = string.Empty; foreach (string s in sc) { if (selectValues.Length != 0) { selectValues += ";"; } selectValues += s; } doc.AddAttribute(f, new XmlAttributeElement("values", selectValues)); if (field.DefaultValue.Enabled) { doc.AddAttribute(f, new XmlAttributeElement("default", field.DefaultValue.Value.ToString(), (-1).ToString())); } break; case FieldType.Number: if (field.DefaultValue.Enabled) { doc.AddAttribute(f, new XmlAttributeElement("default", field.DefaultValue.Value.ToString(), (0).ToString())); } NumberProperty prop = field.Data as NumberProperty; if (prop != null) { doc.AddAttributes(f, new XmlAttributeElement[] { new XmlAttributeElement("decimal", prop.DecimalPlaces.ToString(), (0).ToString()), new XmlAttributeElement("increment", prop.Increment.ToString(), (1).ToString()), new XmlAttributeElement("thousands", prop.Thousands.ToString(), false.ToString()), new XmlAttributeElement("prefix", prop.Prefix, string.Empty), new XmlAttributeElement("suffix", prop.Suffix, string.Empty) }); if (prop.Bounds) { doc.AddAttributes(f, new XmlAttributeElement[] { new XmlAttributeElement("maximum", prop.Maximum.ToString()), new XmlAttributeElement("minimum", prop.Minimum.ToString()) }); } } break; case FieldType.List: ListProperty listRef = field.Data as ListProperty; if (listRef != null) { doc.AddAttribute(f, new XmlAttributeElement("ref_guid", listRef.Reference.Identifier.ToString())); } break; case FieldType.Boolean: if (field.DefaultValue.Enabled) { doc.AddAttribute(f, new XmlAttributeElement("default", field.DefaultValue.Value.ToString())); } break; case FieldType.Date: if (field.DefaultValue.Enabled) { doc.AddAttribute(f, new XmlAttributeElement("default", field.DefaultValue.Value.ToString(), DateTime.MinValue.ToString())); DateProperty dprop = field.Data as DateProperty; if (dprop != null) { doc.AddAttribute(f, new XmlAttributeElement("time", dprop.ViewTime.ToString(), false.ToString())); } } break; case FieldType.Rating: if (field.DefaultValue.Enabled) { doc.AddAttribute(f, new XmlAttributeElement("default", field.DefaultValue.Value.ToString(), (0).ToString())); } break; case FieldType.Reference: ReferenceProperty reference = field.Data as ReferenceProperty; if (reference != null) { doc.AddAttribute(f, new XmlAttributeElement("ref_guid", reference.Reference.Identifier.ToString())); } break; case FieldType.Table: List <ColumnProperty> list = (List <ColumnProperty>)field.Data; foreach (ColumnProperty cp in list) { XmlElement c = doc.CreateElement(f, "column", "name", cp.Name); if (cp.Reference != null) { doc.AddAttribute(c, new XmlAttributeElement("ref_guid", cp.Reference.Identifier.ToString())); } } break; } }