[英]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.