/// <summary> /// Обновить значения атрибутов. /// </summary> private void UpdateNsiAttributeCollection() { SplashScreenManager.ShowForm(typeof(frmWaitForm), true, true); try { SplashScreenManager.Default.SetWaitFormCaption("Импортирую..."); SplashScreenManager.Default.SetWaitFormDescription("Поиск аттрибутов"); if (SelectedNsi == null) { return; } if (NsiModel == null) { return; } HourGlass.Enable = true; NsiModel.Configuration.AutoDetectChangesEnabled = false; //Все настройки атрибутов для выбранного справочника var attr = NsiModel.GM_NSIReferenceAttributeSet.Where(x => x.ReferenceId == SelectedNsi.ReferenceId); List <GM_NSIReferenceRecord> referenceRecordList = NsiModel.GM_NSIReferenceRecordSet.OrderBy(y => y.RecordId) .Where(x => x.ReferenceId.Equals(SelectedNsi.ReferenceId) && x.GM_NSIReferenceRecordAttribute.Any( a => a.GM_NSIReferenceAttribute.ReferenceAttributeId.Equals(attr.FirstOrDefault().ReferenceAttributeId))).ToList(); if (ReferenceAttributeCollection == null || ReferenceAttributeCollection.Count < 1) { //var attributes = NsiModel.GM_NSIReferenceRecordSet.Where(x => x.ReferenceId == SelectedNsi.ReferenceId); //foreach (var attribute in attributes) //{ // GM_NSIReferenceAttribute gm_nsiRA = new GM_NSIReferenceAttribute(); // gm_nsiRA.DataAreaId = attribute.DataAreaId; // gm_nsiRA.RecId = attribute.RecId; // gm_nsiRA.ReferenceAttributeName = attribute.RecordName; // gm_nsiRA.ReferenceAttributeType = Convert.ToInt32(attribute.RecordId); // ReferenceAttributeCollection.Add(gm_nsiRA); //} referenceRecordList = NsiModel.GM_NSIReferenceRecordSet.OrderBy(y => y.RecordId).Where(x => x.ReferenceId.Equals(SelectedNsi.ReferenceId)).ToList(); RunExportButtonEnabled = false; // return; } #region Добавление колонок List <ColumnEx> columns = new List <ColumnEx>(); columns.Add(new ColumnEx() { CellSource = "Id", Header = "Бизнес - ИД записи(RecordId)" }); columns.Add(new ColumnEx() { CellSource = "Name", Header = "Описание записи справочника(RecordName)" }); foreach (GM_NSIReferenceAttribute referenceAttribute in ReferenceAttributeCollection.ToList()) { if (referenceAttribute == null) { continue; } string raName = PointReplace(referenceAttribute.ReferenceAttributeName); switch ((NSIDataTypes)referenceAttribute.ReferenceAttributeType) { case NSIDataTypes.String: columns.Add(new ColumnEx() { CellSource = raName, Header = referenceAttribute.ReferenceAttributeName }); break; case NSIDataTypes.Integer: columns.Add(new ColumnEx() { CellSource = raName, Header = referenceAttribute.ReferenceAttributeName }); break; case NSIDataTypes.Real: columns.Add(new ColumnEx() { CellSource = raName, Header = referenceAttribute.ReferenceAttributeName }); break; case NSIDataTypes.DateTime: columns.Add(new ColumnEx() { CellSource = raName, Header = referenceAttribute.ReferenceAttributeName }); break; case NSIDataTypes.ReferenceRecord: columns.Add(new ColumnEx() { CellSource = raName, Header = referenceAttribute.ReferenceAttributeName }); //TODO ??? //columns.Add(new ColumnEx() { CellSource = raName + ".ReferenceRecordValue" }); break; } } Columns = new ObservableCollection <ColumnEx>(columns); #endregion #region Добавление значений атрибутов List <DynamicListItem> records = new List <DynamicListItem>(); int nsiReferenceRow = 1; foreach (GM_NSIReferenceRecord nsiReferenceRecord in referenceRecordList) { SplashScreenManager.Default.SetWaitFormDescription(String.Format("Загружаю запись {0} из {1}", nsiReferenceRow, referenceRecordList.Count)); dynamic rec = new DynamicListItem(); rec.SetMemberSource("RecId", nsiReferenceRecord.RecId); rec.SetMemberSource("Id", nsiReferenceRecord.RecordId); rec.SetMemberSource("Name", nsiReferenceRecord.RecordName); if (nsiReferenceRecord.GM_NSIReferenceRecordAttribute != null && nsiReferenceRecord.GM_NSIReferenceRecordAttribute.Count > 0) { foreach (GM_NSIReferenceRecordAttribute itemRra in nsiReferenceRecord.GM_NSIReferenceRecordAttribute) { if (itemRra.GM_NSIReferenceAttribute == null) { continue; } string raName = itemRra.GM_NSIReferenceAttribute.ReferenceAttributeName; switch ((NSIDataTypes)itemRra.GM_NSIReferenceAttribute.ReferenceAttributeType) { case NSIDataTypes.String: rec.SetMemberSource(raName, itemRra.ValueString); break; case NSIDataTypes.Integer: rec.SetMemberSource(raName, itemRra.ValueInteger); break; case NSIDataTypes.Real: rec.SetMemberSource(raName, itemRra.ValueReal); break; case NSIDataTypes.DateTime: rec.SetMemberSource(raName, itemRra.ValueDate); break; case NSIDataTypes.ReferenceRecord: if (itemRra.ValueRecordRecId != null && itemRra.ValueRecord != null) { rec.SetMemberSource(raName, itemRra.ValueRecord.RecordId); } break; } } } records.Add(rec); nsiReferenceRow++; } Records = new ObservableCollection <DynamicListItem>(records); RunExportButtonEnabled = Records.Count > 0; #endregion #region Добавление значений атрибутов (DynamicListItemEx) //List<DynamicListItemEx> records = new List<DynamicListItemEx>(); //foreach (GM_NSIReferenceRecord nsiReferenceRecord in referenceRecordList) //{ // dynamic rec = new DynamicListItemEx(); // rec.SetMemberSource(new DynamicItemEx() // { // Key = "Id", // Value = new DynamicReferenceTypeProperty() { StringValue = nsiReferenceRecord.RecordId }, // Obj = null // }); // rec.SetMemberSource(new DynamicItemEx() // { // Key = "Name", // Value = new DynamicReferenceTypeProperty() { StringValue = nsiReferenceRecord.RecordName }, // Obj = null // }); // if (nsiReferenceRecord.GM_NSIReferenceRecordAttribute != null && nsiReferenceRecord.GM_NSIReferenceRecordAttribute.Count > 0) // { // foreach (GM_NSIReferenceRecordAttribute itemRra in nsiReferenceRecord.GM_NSIReferenceRecordAttribute) // { // if (itemRra.GM_NSIReferenceAttribute == null) // continue; // string raName = PointReplace(itemRra.GM_NSIReferenceAttribute.ReferenceAttributeName); // switch ((NSIDataTypes)itemRra.GM_NSIReferenceAttribute.ReferenceAttributeType) // { // case NSIDataTypes.String: // rec.SetMemberSource(new DynamicItemEx() // { // Key = raName, // Value = new DynamicReferenceTypeProperty() { StringValue = itemRra.ValueString }, // Obj = null // }); // break; // case NSIDataTypes.Integer: // rec.SetMemberSource(new DynamicItemEx() // { // Key = raName, // Value = new DynamicReferenceTypeProperty() { IntegerValue = itemRra.ValueInteger }, // Obj = null // }); // break; // case NSIDataTypes.Real: // rec.SetMemberSource(new DynamicItemEx() // { // Key = raName, // Value = new DynamicReferenceTypeProperty() { RealValue = itemRra.ValueReal }, // Obj = null // }); // break; // case NSIDataTypes.DateTime: // rec.SetMemberSource(new DynamicItemEx() // { // Key = raName, // Value = new DynamicReferenceTypeProperty() { DateTimeValue = itemRra.ValueDate }, // Obj = null // }); // break; // case NSIDataTypes.ReferenceRecord: // if (itemRra.ValueRecordRecId != null && itemRra.ValueRecord != null) // { // rec.SetMemberSource(new DynamicItemEx() // { // Key = raName, // Value = new DynamicReferenceTypeProperty() { StringValue = itemRra.ValueRecord.RecordId }, // Obj = null // }); // } // break; // } // } // } // records.Add(rec); //} //Records = new ObservableCollection<DynamicListItemEx>(records); //RunExportButtonEnabled = Records.Count > 0; #endregion #region Добавление значений атрибутов (копия) //List<DynamicListItem> records = new List<DynamicListItem>(); //foreach (GM_NSIReferenceRecord nsiReferenceRecord in referenceRecordList) //{ // dynamic rec = new DynamicListItem(); // rec.SetMemberSource("Id", new DynamicReferenceTypeProperty() { StringValue = nsiReferenceRecord.RecordId }); // rec.SetMemberSource("Name", new DynamicReferenceTypeProperty() { StringValue = nsiReferenceRecord.RecordName }); // if (nsiReferenceRecord.GM_NSIReferenceRecordAttribute != null && nsiReferenceRecord.GM_NSIReferenceRecordAttribute.Count > 0) // { // foreach (GM_NSIReferenceRecordAttribute itemRra in nsiReferenceRecord.GM_NSIReferenceRecordAttribute) // { // if (itemRra.GM_NSIReferenceAttribute == null) // continue; // string raName = PointReplace(itemRra.GM_NSIReferenceAttribute.ReferenceAttributeName); // switch ((NSIDataTypes) itemRra.GM_NSIReferenceAttribute.ReferenceAttributeType) // { // case NSIDataTypes.String: // rec.SetMemberSource( // raName, // new DynamicReferenceTypeProperty() // { // StringValue = itemRra.ValueString // }); // break; // case NSIDataTypes.Integer: // rec.SetMemberSource( // raName, // new DynamicReferenceTypeProperty() // { // IntegerValue = itemRra.ValueInteger // }); // break; // case NSIDataTypes.Real: // rec.SetMemberSource( // raName, // new DynamicReferenceTypeProperty() {RealValue = itemRra.ValueReal}); // break; // case NSIDataTypes.DateTime: // rec.SetMemberSource( // raName, // new DynamicReferenceTypeProperty() // { // DateTimeValue = itemRra.ValueDate // }); // break; // case NSIDataTypes.ReferenceRecord: // if (itemRra.ValueRecordRecId != null && itemRra.ValueRecord != null) // { // rec.SetMemberSource( // raName, // new DynamicReferenceTypeProperty() // { // StringValue = itemRra.ValueRecord.RecordId // }); // } // break; // } // } // } // records.Add(rec); //} //Records = new ObservableCollection<DynamicListItem>(records); //RunExportButtonEnabled = Records.Count > 0; #endregion } catch (Exception ex) { //TODO log } finally { if (NsiModel != null) { NsiModel.Configuration.AutoDetectChangesEnabled = true; } SplashScreenManager.CloseForm(); HourGlass.Enable = false; } }
protected EntityInfo() { Fields = new FieldAttributeCollection(); References = new ReferenceAttributeCollection(); SortingFields = new FieldAttributeCollection(); }