bool delBan = Model.Prohibition.Banned("dis_del"); // Перменная для хранения доступа к удалению //MainFormClinic main = new MainFormClinic(); public Info_Prescription(PrescriptionOfDrug pr) { InitializeComponent(); pres = pr; // Передача назначения лекарства из грида главной формы // Ограничение функционала в зависимости от роли button3.Visible = editBan; button2.Visible = editBan; button24.Visible = addBan; dataGridView5.Columns[9].Visible = delBan; textBox1.Text = Convert.ToString(pres.PlanID); // Передача ID плана лечения в textbox // Заполнение полей данными из грида главной формы int d = pres.DrugID; textBox3.Text = Convert.ToString(OperationsOfDrugs.FindByID(d).ID); textBox4.Text = Convert.ToString(OperationsOfDrugs.FindByID(d).Name); numericUpDown1.Value = (decimal)pres.Quantity; dateTimePicker1.Value = pres.StartTimeOfTaken; dateTimePicker2.Value = pres.FinishTimeOfTaken; // Бан полей textBox1.Enabled = false; textBox3.Enabled = false; textBox4.Enabled = false; numericUpDown1.Enabled = false; dateTimePicker1.Enabled = false; dateTimePicker2.Enabled = false; button1.Enabled = false; DispensingGrid(); }
// Заполнение грида private void Choice_Drug_Load(object sender, EventArgs e) { List <Drug> drug = OperationsOfDrugs.ChoiceGrid_Drug(); foreach (var p in drug) { dataGridView6.Rows.Add(p.ID, p.Name, p.Quantity, p.Measure, p.DateOfCreate, p.DateOfEdit); } }
// Грид с назначениями лекарств 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 button2_Click(object sender, EventArgs e) { if (CheckField() == 2) { drug.Name = textBox1.Text; drug.Quantity = (int)numericUpDown1.Value; drug.Measure = textBox8.Text; OperationsOfDrugs.Edit(drug); MessageBox.Show("Данные о лекарстве изменены"); // При нажатии кнопки вызывается грид с уже измененными данными(авто обновление) на главной форме } }
// Клик на гриде private void dataGridView6_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex > -1) { if (dataGridView6.RowCount - 1 >= e.RowIndex) { int l = e.RowIndex; // Находим индекс строки, где был клик int k = Convert.ToInt32(dataGridView6.Rows[l].Cells[0].Value); // Выдергивание id лекарства из строки Drug drug = OperationsOfDrugs.FindByID(k); prs.DrugField(drug); // Выбор лекарства в форме добавления ps.DrugField(drug); // Выбор лекарства в форме просмотра this.Close(); } } }
private void GridWithPatient() { // Очистка грида чтобы записи не дублировались dataGridView2.Rows.Clear(); // Количество записей на гриде int records = 10; // Все пациенты данного лекарства List <Person> emp = OperationsOfDrugs.Drug_Patient(drug, currentPage, records); // Поиск максимального числа страниц maxpage = emp.Count() / records; // Если записи ровно не делятся на 10 - добавляется еще 1 страница if (emp.Count() % records != 0) { maxpage++; } // Если записей вообще нет - будет 1 страница if (maxpage == 0) { maxpage++; } // Если текущая выбранная страница = максимальной - дезоктивация кнопки ВПЕРЕД if (currentPage == maxpage) { button29.Enabled = false; } // Если текущая выбранная страница = 1 - дезоктивация кнопки НАЗАД if (currentPage == 1) { button30.Enabled = false; } label41.Text = "Страница:" + Convert.ToString(currentPage) + "/" + maxpage; // Заполнение грида с мостом пациентов foreach (Person p in emp) { dataGridView2.Rows.Add(p.ID, p.Surname, p.Name, p.Patronymic, p.Phone, p.DateOfCreate, p.DateOfEdit); } }
// Дабл клик по гриду с лекарствами private void dataGridView6_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { // Открытие карточки лекарства при клике везде на гриде if (e.ColumnIndex != 0) { if (e.RowIndex > -1) { if (dataGridView6.RowCount - 1 >= e.RowIndex) { // Находим индекс строки, где был клик int l = e.RowIndex; // Выдергивание id пациента из строки int k = Convert.ToInt32(dataGridView6.Rows[l].Cells[0].Value); // Вызов конструктора формы с данными строки(лекарства) на которую мы кликнули InfoForm.Info_Drug f = new InfoForm.Info_Drug(OperationsOfDrugs.FindByID(k)); f.ShowDialog(); // Вызов функции грида лекарств для его авто обновления GridWithDrugs(); } } } }