在网格中,我使用绑定列表来绑定数据:
childBindingSource.DataSource =
db.Child.Local.ToBindingList()
.Where(child => selectedrow != null
&& child.MasterID == selectedrow.ID)
.ToList();
或者没有过滤器:
childBindingSource.DataSource = db.Child.Local.ToBindingList();
如果我使用where表达式过滤绑定列表,保存数据不起作用,但我没有任何例外。
有什么想法吗?
用于获取子记录的行点击事件:
private void gridView1_RowClick(object sender, RowClickEventArgs e)
{
selectedrow = gridView1.GetFocusedRow() as Master;
if (selectedrow != null)
{
int id = selectedrow.ID;
db.Child.Where(child => child.MasterID == id).Load();
}
childBindingSource.DataSource = db.Child.Local.ToBindingList();
}
答案 0 :(得分:1)
DbSet.Local
是ObservableCollection
,因此您可以使用ToBindingList()
,并且与网格的数据绑定是平稳的操作。
ToList
只创建一个List<T>
,数据绑定不会传递列表中的添加和删除(我希望更新可以正常工作)。
补救措施是过滤上下文加载到Local
列表中的数据:
db.Child.Where(child => selectedrow != null
&& child.MasterID == selectedrow.ID).Load();
childBindingSource.DataSource = db.Child.Local.ToBindingList();
这意味着您必须为显示和更新的每组子记录使用新的上下文。