protected override void OnClosing(System.ComponentModel.CancelEventArgs e) { if (SnapshotHasChanges()) { var result = MessageBox.Show(@"Сохранить изменения в базу данных?", @"Внимание", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); switch (result) { case DialogResult.Yes: SaveRecord(); break; case DialogResult.No: CancelRecord(); break; default: e.Cancel = true; return; } } _softLicDocTypes.Select().RowChanged -= SoftLicDocTypesViewport_RowChanged; _softLicDocTypes.Select().RowDeleting -= SoftLicDocTypesViewport_RowDeleting; _softLicDocTypes.Select().RowDeleted -= SoftLicDocTypesViewport_RowDeleted; base.OnClosing(e); }
public override void LoadData() { dataGridView.AutoGenerateColumns = false; DockAreas = WeifenLuo.WinFormsUI.Docking.DockAreas.Document; _softLicDocTypes = SoftLicDocTypesDataModel.GetInstance(); //Ожидаем дозагрузки данных, если это необходимо _softLicDocTypes.Select(); _vSoftLicDocTypes = new BindingSource { DataMember = "SoftLicDocTypes", DataSource = DataSetManager.DataSet }; //Инициируем колонки snapshot-модели for (var i = 0; i < _softLicDocTypes.Select().Columns.Count; i++) { _snapshotSoftLicDocTypes.Columns.Add(new DataColumn( _softLicDocTypes.Select().Columns[i].ColumnName, _softLicDocTypes.Select().Columns[i].DataType)); } //Загружаем данные snapshot-модели из original-view for (var i = 0; i < _vSoftLicDocTypes.Count; i++) { _snapshotSoftLicDocTypes.Rows.Add(DataRowViewToArray(((DataRowView)_vSoftLicDocTypes[i]))); } _vSnapshotSoftLicDocTypes = new BindingSource { DataSource = _snapshotSoftLicDocTypes }; _vSnapshotSoftLicDocTypes.CurrentItemChanged += v_snapshotSoftLicTypes_CurrentItemChanged; dataGridView.DataSource = _vSnapshotSoftLicDocTypes; idSoftLicDocType.DataPropertyName = "ID DocType"; softLicDocType.DataPropertyName = "DocType"; dataGridView.DataBindings.DefaultDataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged; dataGridView.CellValidated += dataGridView_CellValidated; //События изменения данных для проверки соответствия реальным данным в модели dataGridView.CellValueChanged += dataGridView_CellValueChanged; //Синхронизация данных исходные->текущие _softLicDocTypes.Select().RowChanged += SoftLicDocTypesViewport_RowChanged; _softLicDocTypes.Select().RowDeleting += SoftLicDocTypesViewport_RowDeleting; _softLicDocTypes.Select().RowDeleted += SoftLicDocTypesViewport_RowDeleted; }