[英]How to bind DataGridView to SubList
我有一個帶有對象的Singleton BindingList列表。
我需要將此列表綁定到DataGridView。 我需要網格僅顯示具有特定屬性值的對象(Property IsEmpty,並且我只想顯示IsEmpty = false的對象)。
綁定完成后,我嘗試遍歷DataGridView行,並使用IsEmpty = false隱藏行。 這行得通,但是在某些情況下(例如對列進行排序),網格無法正常工作。
我的結論是,我需要具有原始列表的子列表,並具有原始列表中所有具有IsEmpty = true屬性的對象。
任何想法做到這一點的最佳方法是什么? (我需要在新列表中保留ListChanged事件,以使綁定正常工作)
在綁定到網格之前 ,您需要過濾數據源。 最好的方法是調用linq的Where
方法。
IEnumerable<yourType> initialSource = getYourSource();
yourGrid.DataSource = initialSource.Where(x => !x.IsEmpty).ToList();
這將使您的原始集合保持完整,並將網格僅綁定到與過濾器匹配的那些對象。
編輯
如果您不能使用linq,那么為什么不進行簡單循環呢?
List<yourType> filteredSource = new List<yourType>();
foreach(var item in initialSource)
if (!item.isEmpty)
filteredSource.Add(item);
yourGrid.DataSource = filteredSource;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.