过滤绑定列表,绑定不起作用

时间:2015-07-29 13:13:05

标签: c# entity-framework

在网格中,我使用绑定列表来绑定数据:

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();

    }

1 个答案:

答案 0 :(得分:1)

DbSet.LocalObservableCollection,因此您可以使用ToBindingList(),并且与网格的数据绑定是平稳的操作。

ToList只创建一个List<T>,数据绑定不会传递列表中的添加和删除(我希望更新可以正常工作)。

补救措施是过滤上下文加载到Local列表中的数据:

db.Child.Where(child => selectedrow != null 
                     && child.MasterID == selectedrow.ID).Load();
childBindingSource.DataSource = db.Child.Local.ToBindingList();

这意味着您必须为显示和更新的每组子记录使用新的上下文。