private void dataGridViewDocuments_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { if(e.RowIndex >= 0 && e.ColumnIndex>=0) { //Редактирование документа DocumentForm documentForm = new DocumentForm(); int id = (int) (dataGridViewDocuments.Rows[e.RowIndex].Cells["Id"].Value); documentForm.value = db.Documents.FirstOrDefault(s => s.Id == id); documentForm.Show(); documentForm.Closed += delegate { if (documentForm.DialogResult == DialogResult.OK) { //Удалены лишь связи. Удаление самих объектов: foreach (var detail in db.DocumentDetails.Where(s=>s.DocumentId==documentForm.value.Id)) { if(!documentForm.value.DocumentDetails.Contains(detail)) db.DocumentDetails.DeleteObject(detail); } //Пересчет суммы документа documentForm.value.Summa = documentForm.value.DocumentDetails.Sum(s => s.Product.Price*s.Qty); db.SaveChanges(); } }; } }
private void toolStripButton1_Click(object sender, EventArgs e) { if(tabControl.SelectedTab == tabPageDocuments) { //Создание нового документа Document doc = new Document {Id=-1, Name = "Новый документ", Date = DateTime.Now, AgentFromId = 1, AgentToId = 2}; DocumentForm documentForm = new DocumentForm {value = doc}; documentForm.Closed += delegate { if (documentForm.DialogResult == DialogResult.OK) { //Пересчет суммы документа //foreach (var detail in documentForm.value.DocumentDetails) //{ // detail //} documentForm.value.Summa = documentForm.value.DocumentDetails.Sum(s => db.Products.FirstOrDefault(p=>p.Id==s.ProductId).Price * s.Qty); db.Documents.AddObject(documentForm.value); db.SaveChanges(); //TODO: Обновить грид } }; documentForm.Show(); } }