C# 筛选绑定列表时,绑定不会';行不通
在网格中,我使用绑定列表绑定数据:C# 筛选绑定列表时,绑定不会';行不通,c#,entity-framework,C#,Entity Framework,在网格中,我使用绑定列表绑定数据: childBindingSource.DataSource = db.Child.Local.ToBindingList() .Where(child => selectedrow != null && child.MasterID == selectedro
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();
}
DbSet.Local
是一个可观察的集合
,因此您可以使用ToBindingList()
,与网格的数据绑定是一个平滑的操作
ToList
只创建了一个列表
,数据绑定不传递列表中的添加和删除信息(不过我希望更新可以正常工作)
补救方法是过滤上下文加载到Local
列表中的数据:
db.Child.Where(child => selectedrow != null
&& child.MasterID == selectedrow.ID).Load();
childBindingSource.DataSource = db.Child.Local.ToBindingList();
这意味着您必须为显示和更新的每一组子记录使用一个新的上下文。什么是
ToBindingList
?使本地数据与网格的数据源保持同步。第二个LOC有效吗?是的。只是过滤数据会把一切都搞糟。您是否尝试在Where
之后调用ToBindingList
筛选器?其他信息:无法创建“lazyloading.Master”类型的常量值。在此上下文中仅支持基元类型或枚举类型。有什么想法吗?检查一下selectedrow!=在查询外部为null,并使用变量var id=selectedrow!=无效的选择了row.ID:0
并在查询中使用ID
。干杯,但是筛选不起作用。在“我的详细信息”表格中,所有记录都被选中……也许你现在应该问一个新问题。我需要更多的细节来了解这里发生了什么。正如我所说的,每次都需要一个新的上下文。现在,您继续将记录添加到本地列表中。