Хорошо, это сводило меня с ума в течение последних двух дней!
Я новичок в C # и учил себя, написав простое приложение.
У меня есть простая форма, которая состоит из комбинированного списка и двух текстовых полей.В выпадающем списке содержится список объектов в таблице базы данных.Текстовые поля позволяют пользователю добавлять новые записи.Это просто список имен (имя и фамилия).
В форме находятся три кнопки для добавления, изменения и удаления.
За кулисами я использую привязку данных и WPF.
Хорошо, моя проблема заключается в следующем ..
И для операции удаления, и для изменения все работает так, как я ожидал.База данных изменяется соответствующим образом, и (что важно), выпадающий список мгновенно отражает изменения, сделанные в объекте, связанном с данными.
НО, когда я создаю и добавляю новый объект, база данных обновляется в соответствии с новым элементом, НО в комбинированном окне НЕпоказать новый объект (имя) в своем списке.Вы должны выйти из формы и вернуться, чтобы комбинированный список правильно отображал таблицу базы данных с новым добавленным элементом.
Может кто-нибудь сказать мне, как правильно получить элемент управления с привязкой к данным для отраженияВСТАВИТЬ изменение в таблицу, к которой оно привязано?
соответствующие фрагменты кода ниже ...
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.myContext = new myEntities();
// bind the contents of the table to the combobox
myComboBox.DataContext = myContext.myPeople;
}
private void myComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// Update the text boxes to reflect the currently selected name
this.person = myComboBox.SelectedItem as myPerson;
if (this.person != null)
{
tbFirstName.Text = this.person.Firstname;
tbSurname.Text = this.person.Surname;
}
}
//User actions...
if (userAction == crudAction.Modify)
{
// Update via the Entity Framework
person.Firstname = tbFirstName.Text;
person.Surname = tbSurname.Text;
msg = "Person details modified";
}
if (userAction == crudAction.Add)
{
person = new myPerson();
person.Firstname = tbFirstName.Text;
person.Surname = tbSurname.Text;
person.idPeople = 0; //Autoincremented db key
myContext.myPeople.AddObject(person);
msg = "New person added";
}
if (userAction == crudAction.Delete)
{
myContext.myPeople.DeleteObject(person);
msg = "Person deleted";
}
myContext.SaveChanges();