private void dgvResources_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) { if (e.Row.HaveSource()) { try { using (var ctx = new OpenDataContext()) { var res = ctx.resources.Find(((resource)e.Row.Cells[MyHelper.strSource].Value).resources_id); //ctx.resources.Attach(res); bool cancel = res.buildings_resources_consume.Count > 0; if (cancel) { MessageBox.Show("Невозможно удалить ресурс, который используется!"); e.Cancel = true; return; } ctx.resources.Remove(res); ctx.SaveChanges(); cbcResorcesId.Remove(res.resources_id); } } catch (Exception err) { MessageBox.Show(err.Message); } } }
private void dgvRConsume_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e) { if (e.Row.HaveSource()) { try { using (var ctx = new OpenDataContext()) { var brc = (buildings_resources_consume)e.Row.Cells[MyHelper.strSource].Value; ctx.buildings_resources_consume.Attach(brc); ctx.buildings_resources_consume.Remove(brc); ctx.SaveChanges(); } } catch (Exception err) { MessageBox.Show(err.Message); } } }
private void dgvResources_RowValidating(object sender, DataGridViewCellCancelEventArgs e) { var row = dgvResources.Rows[e.RowIndex]; if (row.IsNewRow || !dgvResources.IsCurrentRowDirty) { return; } //var cell = dgvOutposts[e.ColumnIndex, e.RowIndex]; //var cellFormatedValue = cell.FormattedValue.ToString().RmvExtrSpaces(); // Проверка можно ли фиксировать строку var cellWithPotentialError = dgvResources[MyHelper.strResourceName, e.RowIndex]; if (cellWithPotentialError.FormattedValue.ToString().RmvExtrSpaces() == "") { cellWithPotentialError.ErrorText = MyHelper.strEmptyCell; row.ErrorText = MyHelper.strBadRow; return; } else { cellWithPotentialError.ErrorText = ""; row.ErrorText = ""; } try { using (var ctx = new OpenDataContext()) { if (row.HaveSource()) { var new_res = (resource)row.Cells[MyHelper.strSource].Value; ctx.resources.Attach(new_res); string new_resources_name = (string)row.Cells[MyHelper.strResourceName].Value; if (ctx.resources.AsEnumerable().FirstOrDefault(res => res != new_res && res.resources_name.ToLower() == new_resources_name.ToLower()) != null) { string eo = $"Ресурс {new_resources_name} уже существует!"; MessageBox.Show(eo); row.ErrorText = MyHelper.strBadRow + " " + eo; return; } new_res.resources_name = new_resources_name; ctx.SaveChanges(); cbcResorcesId.Change(new_res.resources_id, new_res.resources_name); } else { string new_resources_name = (string)row.Cells[MyHelper.strResourceName].Value; if (ctx.resources.AsEnumerable().FirstOrDefault(res => res.resources_name.ToLower() == new_resources_name.ToLower()) != null) { string eo = $"Ресурс {new_resources_name} уже существует!"; MessageBox.Show(eo); row.ErrorText = MyHelper.strBadRow + " " + eo; return; } var new_res = new resource(); new_res.resources_name = new_resources_name; ctx.resources.Add(new_res); ctx.SaveChanges(); row.Cells[MyHelper.strSource].Value = new_res; row.Cells[MyHelper.strResourceId].Value = new_res.resources_id; cbcResorcesId.Add(new_res.resources_id, new_res.resources_name); } } } catch (Exception err) { MessageBox.Show(err.Message); } }
private void dgvRConsume_RowValidating(object sender, DataGridViewCellCancelEventArgs e) { var row = dgvRConsume.Rows[e.RowIndex]; if (row.IsNewRow || !dgvRConsume.IsCurrentRowDirty) { return; } //var cell = dgvOutposts[e.ColumnIndex, e.RowIndex]; //var cellFormatedValue = cell.FormattedValue.ToString().RmvExtrSpaces(); // Проверка можно ли фиксировать строку var cellsWithPotentialErrors = new List <DataGridViewCell> { row.Cells[MyHelper.strBuildingId], row.Cells[MyHelper.strResourceId], row.Cells[MyHelper.strConsumeSpeed], }; foreach (var cellWithPotentialError in cellsWithPotentialErrors) { if (cellWithPotentialError.FormattedValue.ToString().RmvExtrSpaces() == "") { cellWithPotentialError.ErrorText = MyHelper.strEmptyCell; row.ErrorText = MyHelper.strBadRow; } else { cellWithPotentialError.ErrorText = ""; } } if (cellsWithPotentialErrors.FirstOrDefault(cellWithPotentialError => cellWithPotentialError.ErrorText.Length > 0) == null) { row.ErrorText = ""; } else { return; } try { using (var ctx = new OpenDataContext()) { if (row.HaveSource()) { var new_brc = (buildings_resources_consume)row.Cells[MyHelper.strSource].Value; ctx.buildings_resources_consume.Attach(new_brc); int new_building_id = (int)row.Cells[MyHelper.strBuildingId].Value; int new_resource_id = (int)row.Cells[MyHelper.strResourceId].Value; int new_consume_speed = (int)row.Cells[MyHelper.strConsumeSpeed].Value; if (ctx.buildings_resources_consume.AsEnumerable().FirstOrDefault(brc => brc != new_brc && brc.building_id == new_building_id && brc.resources_id == new_resource_id) != null) { string eo = $"Для данного здания потребляемый ресурс уже существует!"; MessageBox.Show(eo); row.ErrorText = MyHelper.strBadRow + " " + eo; return; } if (new_brc.resources_id != new_resource_id || new_brc.building_id != new_building_id) { ctx.buildings_resources_consume.Remove(new_brc); ctx.SaveChanges(); new_brc = new buildings_resources_consume(); new_brc.resources_id = new_resource_id; new_brc.building_id = new_building_id; new_brc.consume_speed = new_consume_speed; ctx.buildings_resources_consume.Add(new_brc); } else { new_brc.consume_speed = new_consume_speed; } ctx.SaveChanges(); } else { int new_building_id = (int)row.Cells[MyHelper.strBuildingId].Value; int new_resource_id = (int)row.Cells[MyHelper.strResourceId].Value; int new_consume_speed = (int)row.Cells[MyHelper.strConsumeSpeed].Value; if (ctx.buildings_resources_consume.AsEnumerable().FirstOrDefault(brc => brc.building_id == new_building_id && brc.resources_id == new_resource_id) != null) { string eo = $"Для данного здания потребляемый ресурс уже существует!"; MessageBox.Show(eo); row.ErrorText = MyHelper.strBadRow + " " + eo; return; } var new_brc = new buildings_resources_consume(); new_brc.resources_id = new_resource_id; new_brc.building_id = new_building_id; new_brc.consume_speed = new_consume_speed; ctx.buildings_resources_consume.Add(new_brc); ctx.SaveChanges(); row.Cells[MyHelper.strSource].Value = new_brc; } } } catch (Exception err) { MessageBox.Show(err.Message); } }