public override void SaveRecord() { dataGridView.EndEdit(); _syncViews = false; var list = SoftSuppliersFromViewport(); if (!ValidateViewportData(list)) { _syncViews = true; return; } for (var i = 0; i < list.Count; i++) { var row = _softSuppliers.Select().Rows.Find(list[i].IdSoftSupplier); if (row == null) { var idSoftSupplier = SoftSuppliersDataModel.Insert(list[i]); if (idSoftSupplier == -1) { _syncViews = true; return; } ((DataRowView)_vSnapshotSoftSuppliers[i])["ID Supplier"] = idSoftSupplier; _softSuppliers.Select().Rows.Add(DataRowViewToArray((DataRowView)_vSnapshotSoftSuppliers[i])); } else { if (RowToSoftSupplier(row) == list[i]) { continue; } if (SoftSuppliersDataModel.Update(list[i]) == -1) { _syncViews = true; return; } row["Supplier"] = list[i].SoftSupplierName == null ? DBNull.Value : (object)list[i].SoftSupplierName; } } list = SoftSuppliersFromView(); 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["idSoftSupplier"].Value != null) && !string.IsNullOrEmpty(dataGridView.Rows[j].Cells["idSoftSupplier"].Value.ToString()) && ((int)dataGridView.Rows[j].Cells["idSoftSupplier"].Value == list[i].IdSoftSupplier)) { rowIndex = j; } } if (rowIndex == -1) { if (SoftSuppliersDataModel.Delete(list[i].IdSoftSupplier.Value) == -1) { _syncViews = true; return; } _softSuppliers.Select().Rows.Find(list[i].IdSoftSupplier).Delete(); } } _syncViews = true; MenuCallback.EditingStateUpdate(); }