// Грид с назначениями лекарств public void PrescriptionGrid() { dataGridView4.Rows.Clear(); // Количество записей на гриде int records = 10; using (Context db = new Context()) { // Находим все записи var p = db.PrescriptionsOfDrugs.Where(x => x.PlanID == plan.ID && x.DateOfDelete == null).ToList(); // Поиск максимального числа страниц maxpage = p.Count() / records; // Если записи ровно не делятся на 10 - добавляется еще 1 страница if (p.Count() % records != 0) { maxpage++; } // Если записей вообще нет - будет 1 страница if (maxpage == 0) { maxpage++; } // Если текущая выбранная страница = максимальной - дезоктивация кнопки ВПЕРЕД if (currentPage == maxpage) { button29.Enabled = false; } // Если текущая выбранная страница = 1 - дезоктивация кнопки НАЗАД if (currentPage == 1) { button30.Enabled = false; } // Если текущая выбранная страница > максимальной - активация кнопки ВПЕРЕД if (currentPage < maxpage) { button29.Enabled = true; } label41.Text = "Страница:" + Convert.ToString(currentPage) + "/" + maxpage; } List <PrescriptionOfDrug> pres = OperationsOfPrescriptionsOfDrugs.FindAllPrescription_Plan(plan, currentPage, records); foreach (var pr in pres) { dataGridView4.Rows.Add(pr.ID, pr.PlanID, OperationsOfDrugs.FindByID(pr.DrugID).Name, pr.Quantity, pr.StartTimeOfTaken, pr.FinishTimeOfTaken, pr.DateOfCreate, pr.DateOfEdit); } }
// Двойное нажатие на грид с назначениями - инфо карточка назначения private void dataGridView4_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex != 8) // Просмотр назначения { if (e.RowIndex > -1) { if (dataGridView4.RowCount - 1 >= e.RowIndex) { int l = e.RowIndex; // Находим индекс строки, где был клик int k = Convert.ToInt32(dataGridView4.Rows[l].Cells[0].Value); // Выдергивание id назначения из строки InfoForm.Info_Prescription f = new InfoForm.Info_Prescription(OperationsOfPrescriptionsOfDrugs.FindByID(k)); // Вызов конструктора формы с данными строки(назначения) на которую мы кликнули f.ShowDialog(); } } } else // Удаление назначения { if (e.RowIndex > -1) { if (dataGridView4.RowCount - 1 >= e.RowIndex) { // Находим индекс строки, где был клик int l = e.RowIndex; const string message = "Хотите удалить назначение лекарства?"; const string caption = "Удаление"; var result = MessageBox.Show(message, caption, MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (result == DialogResult.OK) { // Выдергивание id назначения из строки int k = Convert.ToInt32(dataGridView4.Rows[l].Cells[0].Value); // Удаление этой строки из грида dataGridView4.Rows.Remove(dataGridView4.Rows[l]); // Удаление назначения с найденным id из БД OperationsOfPrescriptionsOfDrugs.Del(k); OperationsOfDispensingDrugs.HideDispensing_Prescription(k); PrescriptionGrid(); } } else { MessageBox.Show("Эту строку нельзя удалить, в ней нет данных."); } } } }
// Кнопка "Сохранить" private void button2_Click(object sender, EventArgs e) { if (numericUpDown1.Value != 0) // Единственная проверка количества лекарства { pres.DrugID = Convert.ToInt32(textBox3.Text); pres.PlanID = Convert.ToInt32(textBox1.Text); pres.Quantity = (int)numericUpDown1.Value; pres.StartTimeOfTaken = dateTimePicker1.Value; pres.FinishTimeOfTaken = dateTimePicker2.Value; OperationsOfPrescriptionsOfDrugs.Edit(pres); MessageBox.Show("Назначение лекарства изменено"); // При нажатии кнопки вызывается грид с уже измененными данными(авто обновление) на главной форме this.Close(); } else { toolTip1.Show("Введите количество лекарства", numericUpDown1, new Point(0, 20), 1000); } }