using Microsoft.Win32; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data.Entity; using System.Data.Entity.Infrastructure; using System.Data.Entity.Migrations; using System.Data.SqlClient; using System.Data.SqlTypes; using System.Linq; using System.Runtime.Remoting.Contexts; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.IO; using System.Data.Entity.Validation; namespace musicschoolapp.Pages { /// /// Логика взаимодействия для StudentEditingPage.xaml /// public partial class CourseEditingPage : Page { musicschoolEntities1 mse = new musicschoolEntities1(); DbSet dbContext_; List students1; bool adding = false; public CourseEditingPage(bool editing) { InitializeComponent(); students1 = mse.Course.ToList(); dGridStudent.ItemsSource = students1; if(editing) { dGridStudent.IsReadOnly = false; } else { dGridStudent.IsReadOnly = true; } } public int updateDB() { try { foreach (var student in students1) { var original = mse.Course.Find(student.CourseID); if (original != null) { mse.Entry(original).CurrentValues.SetValues(student); } else { mse.Course.Add(student); } } int saveresult = mse.SaveChanges(); students1 = mse.Course.ToList(); dGridStudent.ItemsSource=students1; return saveresult; } catch (Exception ex) { students1 = mse.Course.ToList(); dGridStudent.ItemsSource = students1; return -1; } } private void dGridStudent_MouseDoubleClick(object sender, MouseButtonEventArgs e) { var grid = (DataGrid)sender; var cellInfo = grid.SelectedCells[grid.CurrentCell.Column.DisplayIndex]; if (cellInfo.Column.Header.ToString() == "Фото") { if (MessageBox.Show("Вы дважды кликнули по столбцу 'Фото'. Изменить?", "Вопрос", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.ShowDialog(); if (mse.Course.Find((grid.SelectedItem as Course).CourseID) == null) { MessageBox.Show("Объект не создан."); grid.SelectedItem = -1; mse.Course.Add(dGridStudent.SelectedItem as Course); try { mse.SaveChanges(); } catch (DbEntityValidationException ex) { foreach (var entityValidationErrors in ex.EntityValidationErrors) { foreach (var validationError in entityValidationErrors.ValidationErrors) { MessageBox.Show("Свойство: " + validationError.PropertyName + " Ошибка: " + validationError.ErrorMessage); } } } MessageBox.Show("добавил"); int index = grid.SelectedIndex; grid.SelectedIndex = -1; grid.SelectedIndex = index; dGridStudent_SelectionChanged(sender, new SelectionChangedEventArgs(DataGrid.SelectionChangedEvent, new Collection { }, new Collection { dGridStudent.SelectedItem })); } mse.SaveChanges(); dGridStudent.ItemsSource = mse.Course.ToList(); } } } private void dGridStudent_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.AddedItems != null && e.AddedItems.Count > 0) { } else if (e.RemovedItems != null && e.RemovedItems.Count > 0) { Course selectedStudent = (e.RemovedItems[0] as Course); if (selectedStudent != null) { Course studentInDb = mse.Course.Find(selectedStudent.CourseID); if (studentInDb != null) { mse.Course.Remove(studentInDb); try { mse.SaveChanges(); } catch (DbUpdateException ex) { MessageBox.Show("Запись, похоже, удалить нельзя.\n\n" + ex.InnerException); students1 = mse.Course.ToList(); mse.Entry(studentInDb).State = System.Data.EntityState.Unchanged; return; } students1.Remove(dGridStudent.SelectedItem as Course); dGridStudent.SelectedIndex = -1; MessageBox.Show("Удалено"); } } } } } }