private void button2_Click(object sender, EventArgs e) { MedicamentRemain selectedItem = remainsTable.CurrentRow.DataBoundItem as MedicamentRemain; if (selectedItem.Medicament != null && NotificationHelper.ShowQuestion("Ви впевнені, що хочете видалити виділений елемент?") != System.Windows.Forms.DialogResult.Yes) { return; } int deletingRowIndex = remainsTable.CurrentRow.Index; if (selectedItem.Medicament != null) { existingMedicamentsInTable.Remove(selectedItem.Medicament.Id); } remainsTable.Rows.RemoveAt(deletingRowIndex); RecalculateRowsNumbers(deletingRowIndex); if (selectedItem.Id > 0) { backgroundDbUpdateWorker.RunWorkerAsync(new DbRecordChangesTask { DbRecord = selectedItem, ChangesType = DbRecordChangesType.Remove }); medRemainsList.Remove(selectedItem); } }
private void button1_Click(object sender, EventArgs e) { MedicamentRemain newMedRem = new MedicamentRemain(); newMedRem.HospitalDepartmentId = Convert.ToInt32(departmentsCBList.SelectedValue); medRemainsList.Add(newMedRem); remainsTable.CurrentCell = remainsTable.Rows[remainsTable.Rows.Count - 1].Cells[2]; }
// Обновляем данные в БД в фоновом режиме private void backgroundDbUpdateWorker_DoWork(object sender, DoWorkEventArgs e) { DbRecordChangesTask updateDbTask = e.Argument as DbRecordChangesTask; try { using (MedicamentRemainsContext mc = new MedicamentRemainsContext()) { MedicamentRemain record = updateDbTask.DbRecord as MedicamentRemain; record.UpdateDate = DateTime.Now; switch (updateDbTask.ChangesType) { case DbRecordChangesType.Create: backgroundDbUpdateWorker.ReportProgress(0, "Створення запису по медикаменту " + record.Medicament + " ..."); mc.Medicaments.Attach(record.Medicament); mc.MedicamentRemains.Add(record); mc.SaveChanges(); backgroundDbUpdateWorker.ReportProgress(0, "Запис успішно доданий до бази данних!"); break; case DbRecordChangesType.Update: backgroundDbUpdateWorker.ReportProgress(0, "Оновлення запису по медикаменту " + record.Medicament + " ..."); mc.Medicaments.Attach(record.Medicament); mc.Entry <MedicamentRemain>(record).State = System.Data.Entity.EntityState.Modified; mc.SaveChanges(); backgroundDbUpdateWorker.ReportProgress(0, "Запис успішно оновлений у базі данних!"); break; case DbRecordChangesType.Remove: backgroundDbUpdateWorker.ReportProgress(0, "Видалення запису по медикаменту " + record.Medicament + " ..."); MedicamentRemain item = mc.MedicamentRemains.Where(p => (p.Id == record.Id)).First(); mc.MedicamentRemains.Remove(item); mc.SaveChanges(); backgroundDbUpdateWorker.ReportProgress(0, "Запис успішно видалений з бази данних!"); break; } } } catch (Exception ex) { backgroundDbUpdateWorker.ReportProgress(0, "Помилка: " + ex.Message); } // Задержка, чтобы пользователь смог прочитать сообщение об успехе операции либо об ошибке System.Threading.Thread.Sleep(3000); }
private void remainsTable_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) { for (int i = 0; i < e.RowCount; i++) { MedicamentRemain rowMedRemain = remainsTable.Rows[e.RowIndex].DataBoundItem as MedicamentRemain; remainsTable.Rows[e.RowIndex + i].Cells[1].Value = (e.RowIndex + i + 1); if (rowMedRemain.Medicament != null) { remainsTable.Rows[e.RowIndex + i].Cells[4].Value = rowMedRemain.Medicament.Meter; } } }
private void remainsTable_CellValueChanged(object sender, DataGridViewCellEventArgs e) { if ((e.ColumnIndex == 3 || e.ColumnIndex == 2) && e.RowIndex >= 0) { MedicamentRemain currentElement = remainsTable.Rows[e.RowIndex].DataBoundItem as MedicamentRemain; // Форматируем введённый остаток (добавляем десятичную часть) //string formatedRemain = currentElement.CurrentRemain.ToString("F4"); //remainsTable.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = Convert.ToDecimal(formatedRemain); if (currentElement.Medicament != null && currentElement.Id > 0) { SendUpdateDbTask(new DbRecordChangesTask { DbRecord = currentElement, ChangesType = DbRecordChangesType.Update }); } } }
// Смена медикамента при двойном клике на ячейку таблицы private void remainsTable_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { // Убираем возможность смены медикамента, если выбран показ итогов по остаткам int selectedDepartmentId = Convert.ToInt32(departmentsCBList.SelectedValue); if (selectedDepartmentId < 0) { return; } MedicamentRemain currentElement = remainsTable.Rows[e.RowIndex].DataBoundItem as MedicamentRemain; if (e.ColumnIndex == 2) { MedicamentSelectForm mf = new MedicamentSelectForm(existingMedicamentsInTable); mf.ShowDialog(); if (mf.SelectedMedicament != null) { if (currentElement.Medicament != null) { existingMedicamentsInTable.Remove(currentElement.Medicament.Id); } existingMedicamentsInTable.Add(mf.SelectedMedicament.Id); remainsTable.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = mf.SelectedMedicament; remainsTable.Rows[e.RowIndex].Cells[4].Value = mf.SelectedMedicament.Meter; currentElement.MedicamentId = mf.SelectedMedicament.Id; if (currentElement.Id == 0) { SendUpdateDbTask(new DbRecordChangesTask { DbRecord = currentElement, ChangesType = DbRecordChangesType.Create }); } else { SendUpdateDbTask(new DbRecordChangesTask { DbRecord = currentElement, ChangesType = DbRecordChangesType.Update }); } } } }
private void remainsLoadWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { remainsTable.DataSource = medRemainsList; for (int i = 0; i < remainsTable.RowCount; i++) { MedicamentRemain row = remainsTable.Rows[i].DataBoundItem as MedicamentRemain; if (row.Medicament != null) { remainsTable.Rows[i].Cells[4].Value = row.Medicament.Meter; } } remainsTable.Update(); departmentsCBList.Enabled = true; int selectedDepId = Convert.ToInt32(departmentsCBList.SelectedValue); if (selectedDepId > 0) { addRecord.Enabled = true; } ToggleLoadingAnimation(); }