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 Instr : Page { musicschoolEntities1 mse = new musicschoolEntities1(); DbSet dbContext_; List students1; bool adding = false; public Instr() { InitializeComponent(); //dbContext_ = dbContext; students1 = mse.Instruments.ToList(); dGridStudent.ItemsSource = students1; } public int updateDB() { try { foreach (var student in students1) { var original = mse.Instruments.Find(student.Id_instrument); if (original != null) { // Обновить запись в базе данных mse.Entry(original).CurrentValues.SetValues(student); } else { mse.Instruments.Add(student); } } students1 = mse.Instruments.ToList(); dGridStudent.ItemsSource = students1; int saveresult = mse.SaveChanges(); return saveresult; } catch (Exception ex) { 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.Instruments.Find((grid.SelectedItem as Instruments).Id_instrument) == null) { MessageBox.Show("Объект не создан."); grid.SelectedItem = -1; //return; mse.Instruments.Add(dGridStudent.SelectedItem as Instruments); 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.RaiseEvent(); dGridStudent_SelectionChanged(sender, new SelectionChangedEventArgs(DataGrid.SelectionChangedEvent, new Collection { }, new Collection { dGridStudent.SelectedItem })); } mse.SaveChanges(); dGridStudent.ItemsSource = mse.Instruments.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) { Instruments selectedStudent = (e.RemovedItems[0] as Instruments); if (selectedStudent != null) { Instruments studentInDb = mse.Instruments.Find(selectedStudent.Id_instrument); if (studentInDb != null) { mse.Instruments.Remove(studentInDb); try { mse.SaveChanges(); } catch (DbUpdateException ex) { MessageBox.Show("Запись, похоже, удалить нельзя.\n\n" + ex.InnerException); students1 = mse.Instruments.ToList(); mse.Entry(studentInDb).State = System.Data.EntityState.Unchanged; return; } students1.Remove(dGridStudent.SelectedItem as Instruments); dGridStudent.SelectedIndex = -1; //students1 = mse.Student.ToList(); MessageBox.Show("Удалено"); } } } } private void BtnEdit_Click(object sender, RoutedEventArgs e) { { } } } }