При редактировании добавляется новая строка. Как исправить?
Проблема в том, что данные редактируются, но, при этом добавляется новая строка с теми же параметрами, которые были в редактируемой строке. Как это подправить?
С#
private Teacher teacher = new Teacher();
public PageAdmin_Menu_Teacher_Edit(Teacher selectedTeacher)
{
InitializeComponent();
DataContext = teacher;
if (selectedTeacher != null)
teacher = selectedTeacher;
DataContext = teacher;
Fam.Text = selectedTeacher.SurnameTeacher.ToString();
Nam.Text = selectedTeacher.FirstnameTeacher.ToString();
Otc.Text = selectedTeacher.PatronymicTeacher.ToString();
Pass.Text = selectedTeacher.PasswordTeacher.ToString();
Log.Text = selectedTeacher.LoginTeacher.ToString();
}
private void SaveTeacher_Click(object sender, RoutedEventArgs e)
{
try
{
Teacher _teacher = new Teacher()
{
SurnameTeacher = Fam.Text,
FirstnameTeacher = Nam.Text,
PatronymicTeacher = Otc.Text,
PasswordTeacher = Pass.Text,
LoginTeacher = Log.Text
};
ХолчукУПТеорияВероятностейEntities2.GetContext().Teacher.Add(_teacher);
ХолчукУПТеорияВероятностейEntities2.GetContext().SaveChanges();
MessageBox.Show("Данные успешно изменены");
NavigationService.Navigate(new PageAdmin_Menu_Teacher());
}
catch (DbEntityValidationException Ex)
{
foreach (DbEntityValidationResult validationError in Ex.EntityValidationErrors)
{
MessageBox.Show("Object: " + validationError.Entry.Entity.ToString());
MessageBox.Show("");
foreach (DbValidationError err in validationError.ValidationErrors)
{
MessageBox.Show(err.ErrorMessage + "");
}
}
}
}
XAML, если вдруг надо
<Grid>
<Border VerticalAlignment="Center">
<StackPanel HorizontalAlignment="Center">
<Label HorizontalAlignment="Center" >Переименуйте фамилию преподавателя</Label>
<TextBox x:Name="Fam" Text="{Binding SurnameTeacher}" ></TextBox>
<Label HorizontalAlignment="Center" >Переименуйте имя преподавателя</Label>
<TextBox x:Name="Nam" Text="{Binding FirstnameTeacher}" ></TextBox>
<Label HorizontalAlignment="Center" >Переименуйте отчество преподавателя</Label>
<TextBox x:Name="Otc" Text="{Binding PatronymicTeacher}" ></TextBox>
<Label HorizontalAlignment="Center" >Поменяйте пароль авторизации</Label>
<TextBox x:Name="Pass" Text="{Binding PasswordTeacher}" ></TextBox>
<Label HorizontalAlignment="Center" >Поменяйте логин авторизации</Label>
<TextBox x:Name="Log" Text="{Binding LoginTeacher}" ></TextBox>
<WrapPanel>
<Button Margin="5" Width="250" x:Name="SaveTeacher" Click="SaveTeacher_Click" >Сохранить изменения</Button>
<Button Margin="5" Width="250" x:Name="Back" Click="Back_Click" >Отменить</Button>
</WrapPanel>
</StackPanel>
</Border>
</Grid>
Источник: Stack Overflow на русском