protected override void OnClosing(System.ComponentModel.CancelEventArgs e) { if (SnapshotHasChanges()) { var result = MessageBox.Show(@"Сохранить изменения в базу данных?", @"Внимание", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (result == DialogResult.Yes) { SaveRecord(); } else if (result == DialogResult.No) { CancelRecord(); } else { e.Cancel = true; return; } } _softSuppliers.Select().RowChanged -= SoftSuppliersViewport_RowChanged; _softSuppliers.Select().RowDeleting -= SoftSuppliersViewport_RowDeleting; _softSuppliers.Select().RowDeleted -= SoftSuppliersViewport_RowDeleted; base.OnClosing(e); }
public override void LoadData() { dataGridView.AutoGenerateColumns = false; DockAreas = WeifenLuo.WinFormsUI.Docking.DockAreas.Document; _softSuppliers = SoftSuppliersDataModel.GetInstance(); //Ожидаем дозагрузки данных, если это необходимо _softSuppliers.Select(); _vSoftSuppliers = new BindingSource { DataMember = "SoftSuppliers", DataSource = DataSetManager.DataSet }; //Инициируем колонки snapshot-модели for (var i = 0; i < _softSuppliers.Select().Columns.Count; i++) { _snapshotSoftSuppliers.Columns.Add(new DataColumn( _softSuppliers.Select().Columns[i].ColumnName, _softSuppliers.Select().Columns[i].DataType)); } //Загружаем данные snapshot-модели из original-view for (var i = 0; i < _vSoftSuppliers.Count; i++) { _snapshotSoftSuppliers.Rows.Add(DataRowViewToArray((DataRowView)_vSoftSuppliers[i])); } _vSnapshotSoftSuppliers = new BindingSource { DataSource = _snapshotSoftSuppliers }; _vSnapshotSoftSuppliers.CurrentItemChanged += v_snapshotSuppliers_CurrentItemChanged; dataGridView.DataSource = _vSnapshotSoftSuppliers; idSoftSupplier.DataPropertyName = "ID Supplier"; softSupplier.DataPropertyName = "Supplier"; dataGridView.DataBindings.DefaultDataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged; dataGridView.CellValidated += dataGridView_CellValidated; //События изменения данных для проверки соответствия реальным данным в модели dataGridView.CellValueChanged += dataGridView_CellValueChanged; //Синхронизация данных исходные->текущие _softSuppliers.Select().RowChanged += SoftSuppliersViewport_RowChanged; _softSuppliers.Select().RowDeleting += SoftSuppliersViewport_RowDeleting; _softSuppliers.Select().RowDeleted += SoftSuppliersViewport_RowDeleted; }