private void Delete_Click(object sender, EventArgs e) { if (MessageBox.Show("Удалить данную заявку", "Внимание!", MessageBoxButtons.YesNo) == DialogResult.Yes) { //DB.order_detail od = (DB.order_detail)olvMain.SelectedObject; DB.order o = (DB.order)olvMain.SelectedObject; foreach (var od in o.details) { od.order_num = o.num; od.order_date = o.date; DB.order_detail.delete_order_details(od); o.details.Remove(od); } DB.order.delete_order(o); //DB.order_detail.delete_order_details(od); olvMain.RefreshObjects(o.details); olvMain.RemoveObject(o); // DB.load(); // olvMain.SetObjects(DB.orders.Values); olvMain.Refresh(); } }
} //этот метод показывает, что мы в режиме ввода новой заявки public void Execute(DB.order o) { ord = o; if (ord == null) { ord = null; ordnew = new DB.order(); ordnew.num = DB.order.get_new_order_num(); ordnew.customer_id = DB.customers.Values.First().id; ordnew.employee_id = DB.employees.Values.First().id; ordnew.date = DateTime.Today.Date; //здесь самостоятельно укоротить до даты (без часов и т.п.) } else { ordnew = new DB.order(o); ord = o; TextBoxNum.Text = o.num.ToString(); } TextBoxDate.Text = ordnew.date.Date.ToString(); //для поля сделать шаблон ввода, чтобы только год/месяц/день вводился. и ToString() здесь не пройдет наверное (при шаблоне), нужен будет форматированный вывод даты TextBoxNum.ReadOnly.ToString(); //нет, номер пускай нельзя вводить, только подставлять готовый (TextBoxNum.ReadOnly) comboBoxEmp.DataSource = DB.employees.Values.ToList(); comboBoxEmp.DisplayMember = "name"; comboBoxEmp.ValueMember = "id"; comboBoxEmp.SelectedValue = ordnew.employee_id; comboBoxCust.DataSource = DB.customers.Values.ToList(); comboBoxCust.DisplayMember = "printed_name"; comboBoxCust.ValueMember = "id"; comboBoxCust.SelectedValue = ordnew.customer_id; comboBoxProduct.DataSource = DB.products.Values.ToList(); comboBoxProduct.DisplayMember = "name"; comboBoxProduct.ValueMember = "id"; if (ordnew.details.Count() > 0) { comboBoxProduct.SelectedValue = ordnew.details.First().product_id; } else { comboBoxProduct.SelectedValue = DB.products.Values.First().id; } olvOrderDetails.SetObjects(ordnew.details); ShowDialog(); //далее работаешь c ordnew. По кнопке применить или сохранить, смотришь, что изменилось в заявке (сравнить старую и новую) и обновляешь старую и вносишь изменения в БД. //если в режиме ввода новой заявки, то новую добавляешь в БД и затем все записи из details. Если все успешно, то добавляешь заявку в список orders. }