【发布时间】:2011-12-14 09:11:51
【问题描述】:
我有一个显示实体列表的窗口,我想在新窗口中编辑 gridview 的选择项(不在网格中)。当我提交我的表单时没有发生错误,但实体在数据库中没有变化!请帮帮我。
在我的列表窗口顶部代码后面:
private ObservableCollection<Employee> AllEmployeesData { get; set; }
private ListCollectionView View;
在 window_loaded 中,我使用此方法获取数据:
public void LoadAllEmployees()
{
IEnumerable<Employee> data = null;
using (ArchiveEntities db = new ArchiveEntities())
{
data = db.Employees.Include("Department");
this.AllEmployeesData = new ObservableCollection<Employee>(data);
}
CollectionViewSource employeeSource = (CollectionViewSource)this.FindResource("AllEmployeesDataSource");
employeeSource.Source = this.AllEmployeesData;
this.View = (ListCollectionView)employeeSource.View;
}
Editbutton点击事件:
EditEmployeeView win = new EditEmployeeView();
View.EditItem(SelectedEmployee);
win.DataContext = SelectedEmployee;
if ((bool)win.ShowDialog())
{
using (ArchiveEntities db = new ArchiveEntities())
{
Employee employee = db.Employees.Single(x => x.Id == SelectedEmployee.Id);
db.Employees.ApplyCurrentValues(employee);
db.SaveChanges();
View.CommitEdit();
}
}
else
{
View.CancelEdit();
}
以上所有代码都在我的第一个窗口(显示实体列表的窗口)中。 在我的第二个窗口(编辑第一个窗口的选定项目的窗口):
提交按钮点击事件:
DialogResult = true;
Close();
我的问题是:当我提交编辑表单时没有发生错误,但数据没有保存在数据库中,当我取消编辑表单时,我收到此错误:
InvalidOperationException 未处理:不支持 CancelEdit 对于当前的编辑项。
【问题讨论】:
标签: c# wpf data-binding gridview listcollectionview