protected override void PrepareDataObjectForEdit(ICSSoft.STORMNET.DataObject dobject) { // *** Start programmer edit section *** (PrepareDataObjectForEdit (DataObject) start) // *** End programmer edit section *** (PrepareDataObjectForEdit (DataObject) start) m_objView = ICSSoft.STORMNET.Information.GetView("MainObjE", typeof(SimpleTestAuditProject.MainObj)); if (((dobject.GetStatus(false) != ICSSoft.STORMNET.ObjectStatus.Created) || dobject.Prototyped)) { ICSSoft.STORMNET.Business.DataServiceProvider.DataService.LoadObject(m_objView, dobject, false, false); dobject.InitDataCopy(); } // *** Start programmer edit section *** (PrepareDataObjectForEdit (DataObject) end) // *** End programmer edit section *** (PrepareDataObjectForEdit (DataObject) end) }
/// <summary> /// Извлечение объекта данных из строки /// </summary> /// <param name="xmlEl"> Текущий элемент xml </param> /// <param name="dataObject"> Текущий объект данных </param> /// <param name="assemblies"> Необходимые сборки </param> /// <param name="DataObjectCache"> DataObjectCache </param> /// <param name="deserializedObjectsList"> Словарь десериализованных объектов с их первичными ключами </param> private static void prv_XmlElement2DataObject( XmlElement xmlEl, ICSSoft.STORMNET.DataObject dataObject, SortedList assemblies, DataObjectCache DataObjectCache, Dictionary <string, ICSSoft.STORMNET.DataObject> deserializedObjectsList) { if (!deserializedObjectsList.ContainsKey(dataObject.__PrimaryKey.ToString())) { deserializedObjectsList.Add(dataObject.__PrimaryKey.ToString(), dataObject); } var storableprops = new ArrayList(Information.GetStorablePropertyNames(dataObject.GetType())); var order = new StringCollection(); order.AddRange(Information.GetLoadingOrder(dataObject.GetType())); foreach (string propname in order) { // Прочитка в соответствии с указанным порядком prv_ReadProperty(xmlEl, dataObject, propname, assemblies, DataObjectCache, deserializedObjectsList); } XmlAttributeCollection xmlattributes = xmlEl.Attributes; XmlNodeList xmlchilds = xmlEl.ChildNodes; if (xmlattributes != null) { foreach (XmlAttribute xmlattribute in xmlattributes) { if (!order.Contains(xmlattribute.Name) && storableprops.Contains(xmlattribute.Name)) { prv_ReadAttribute(xmlattribute, dataObject); } } } if (xmlchilds != null) { foreach (XmlNode xmlchild in xmlchilds) { Type proptype = Information.GetPropertyType(dataObject.GetType(), xmlchild.Name); if (proptype.IsSubclassOf(typeof(DataObject))) { // Это мастер prv_ReadMaster(xmlchild, dataObject, assemblies, DataObjectCache, deserializedObjectsList); } else { // Это детейл if (!order.Contains(xmlchild.Name)) { var detail = (DetailArray)Information.GetPropValueByName(dataObject, xmlchild.Name); XmlNodeList xmldetailobjects = xmlchild.ChildNodes; if (xmldetailobjects != null) { prv_ReadDetail(xmldetailobjects, detail, assemblies, DataObjectCache, deserializedObjectsList); } } } } } if (xmlEl.HasAttribute("DynamicProperties")) { if (xmlEl.HasAttribute("DynamicProperties")) { string dpstr = xmlEl.GetAttribute("DynamicProperties"); if (string.IsNullOrEmpty(dpstr)) { dataObject.DynamicProperties = new NameObjectCollection(); } else { dataObject.DynamicProperties = (NameObjectCollection)ObjectFromString(dpstr); } } } dataObject.InitDataCopy(); dataObject.SetLoadingState(LoadingState.Loaded); dataObject.SetStatus(ObjectStatus.UnAltered); }