簡體   English   中英

篩選綁定列表,綁定不起作用

[英]Filtering a binding list, binding doesn't work

在網格中,我使用綁定列表來綁定數據:

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是一個ObservableCollection ,因此您可以使用ToBindingList() ,並且與網格進行數據綁定是一項平滑的操作。

ToList只會創建一個List<T>並且數據綁定不會傳達列表中的添加和刪除(不過我希望更新能夠正常工作)。

補救措施是將上下文裝入的數據過濾到“ Local列表中:

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

這意味着您必須為顯示和更新的每個子記錄集使用新的上下文。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM