private static void CalcDataModelsUpdate(string table) { switch (table) { case "Software": if (CalcDataModelSoftwareConcat.HasInstance()) { CalcDataModelSoftwareConcat.GetInstance().DefferedUpdate = true; } break; case "SoftVersions": if (CalcDataModelSoftwareConcat.HasInstance()) { CalcDataModelSoftwareConcat.GetInstance().DefferedUpdate = true; } break; case "SoftLicenses": if (CalcDataModelLicensesConcat.HasInstance()) { CalcDataModelLicensesConcat.GetInstance().DefferedUpdate = true; } break; } }
public void Run() { var context = SynchronizationContext.Current; ThreadPool.QueueUserWorkItem(_ => { while (true) { context.Send(__ => { if (CalcDataModelLicensesConcat.HasInstance() && CalcDataModelLicensesConcat.GetInstance().DefferedUpdate) { CalcDataModelLicensesConcat.GetInstance().Refresh(EntityType.Unknown, null, true); CalcDataModelLicensesConcat.GetInstance().DefferedUpdate = false; } if (CalcDataModelSoftwareConcat.HasInstance() && CalcDataModelSoftwareConcat.GetInstance().DefferedUpdate) { CalcDataModelSoftwareConcat.GetInstance().Refresh(EntityType.Unknown, null, true); CalcDataModelSoftwareConcat.GetInstance().DefferedUpdate = false; } }, null); //Обновление делаем примерно каждые CalcDataModelsUpdateTimeout милисекунд Thread.Sleep(LicenseSoftwareSettings.CalcDataModelsUpdateTimeout); } }, null); }
private void checkBoxSoftwareNameEnable_CheckedChanged(object sender, EventArgs e) { if (comboBoxSoftwareName.DataSource == null) { _software = CalcDataModelSoftwareConcat.GetInstance(); _software.Select(); _vSoftware = new BindingSource { DataMember = "SoftwareConcat", DataSource = DataSetManager.DataSet }; } comboBoxSoftwareName.DataSource = _vSoftware; comboBoxSoftwareName.ValueMember = "ID Version"; comboBoxSoftwareName.DisplayMember = "Software"; comboBoxSoftwareName.Enabled = checkBoxSoftwareNameEnable.Checked; }
public override void DeleteRecord() { if (MessageBox.Show(@"Вы действительно хотите удалить эту запись?", @"Внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes) { if (SoftwareDataModel.Delete((int)((DataRowView)_vSoftware.Current)["ID Software"]) == -1) { return; } _isEditable = false; ((DataRowView)_vSoftware[_vSoftware.Position]).Delete(); _isEditable = true; _viewportState = ViewportState.ReadState; MenuCallback.EditingStateUpdate(); MenuCallback.ForceCloseDetachedViewports(); if (CalcDataModelSoftwareConcat.HasInstance()) { CalcDataModelSoftwareConcat.GetInstance().Refresh(EntityType.Software, (int)((DataRowView)_vSoftware.Current)["ID Software"], true); } } }
public override void SaveRecord() { var software = SoftwareFromViewport(); if (!ValidateSoftware(software)) { return; } switch (_viewportState) { case ViewportState.ReadState: MessageBox.Show(@"Нельзя сохранить неизмененные данные. Если вы видите это сообщение, обратитесь к системному администратору", @"Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); break; case ViewportState.NewRowState: var idSoftware = SoftwareDataModel.Insert(software); if (idSoftware == -1) { return; } DataRowView newRow; software.IdSoftware = idSoftware; _isEditable = false; if (_vSoftware.Position == -1) { newRow = (DataRowView)_vSoftware.AddNew(); } else { newRow = (DataRowView)_vSoftware[_vSoftware.Position]; } FillRowFromSoftware(software, newRow); _softwareDm.EditingNewRecord = false; _isEditable = true; break; case ViewportState.ModifyRowState: if (software.IdSoftware == null) { MessageBox.Show(@"Вы пытаетесь изменить запись о программном обеспечении без внутренного номера. " + @"Если вы видите это сообщение, обратитесь к системному администратору", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); return; } if (SoftwareDataModel.Update(software) == -1) { return; } var row = (DataRowView)_vSoftware[_vSoftware.Position]; _isEditable = false; FillRowFromSoftware(software, row); break; } dataGridView.Enabled = true; _isEditable = true; dataGridView.RowCount = _vSoftware.Count; _viewportState = ViewportState.ReadState; MenuCallback.EditingStateUpdate(); SetViewportCaption(); if (CalcDataModelSoftwareConcat.HasInstance()) { CalcDataModelSoftwareConcat.GetInstance().Refresh(EntityType.Software, software.IdSoftware.Value, true); } }
public override void SaveRecord() { dataGridView.EndEdit(); _syncViews = false; var list = SoftVersionsFromViewport(); if (!ValidateSoftVersions(list)) { _syncViews = true; return; } for (var i = 0; i < list.Count; i++) { var row = _softVersions.Select().Rows.Find(list[i].IdVersion); if (row == null) { var idLicKey = SoftVersionsDataModel.Insert(list[i]); if (idLicKey == -1) { _syncViews = true; return; } ((DataRowView)_vSnapshotSoftVersions[i])["ID Version"] = idLicKey; _softVersions.Select().Rows.Add(DataRowViewToArray((DataRowView)_vSnapshotSoftVersions[i])); } else { var softLicKeyFromView = RowToSoftVersion(row); if (softLicKeyFromView == list[i]) { continue; } if (SoftVersionsDataModel.Update(list[i]) == -1) { _syncViews = true; return; } row["ID Software"] = list[i].IdSoftware == null ? DBNull.Value : (object)list[i].IdSoftware; row["Version"] = list[i].Version == null ? DBNull.Value : (object)list[i].Version; } } list = SoftVersionsFromView(); for (var i = 0; i < list.Count; i++) { var rowIndex = -1; for (var j = 0; j < dataGridView.Rows.Count; j++) { if ((dataGridView.Rows[j].Cells["idVersion"].Value != null) && !string.IsNullOrEmpty(dataGridView.Rows[j].Cells["idVersion"].Value.ToString()) && ((int)dataGridView.Rows[j].Cells["idVersion"].Value == list[i].IdVersion)) { rowIndex = j; } } if (rowIndex != -1) { continue; } if (SoftVersionsDataModel.Delete(list[i].IdVersion.Value) == -1) { _syncViews = true; return; } _softVersions.Select().Rows.Find(list[i].IdVersion).Delete(); } _syncViews = true; MenuCallback.EditingStateUpdate(); if (CalcDataModelSoftwareConcat.HasInstance()) { CalcDataModelSoftwareConcat.GetInstance().Refresh(EntityType.Unknown, null, true); } }