2014-08-28 107 views
0

我在我的數據存儲庫中使用下面的代碼來返回實體列表。 我要綁定使用的WinForms BindingSource的列表中,然後才能夠支持和過濾的BindingSource創建支持IBindingListView的實體列表?

我目前使用類似

mybindingSource.datasource = repository.GetList(p => p.Id > 0 && p.Archived == false, x => x.Organisation); 

然而mybindingSource.SupportsFilter返回false。

的庫函數是

public virtual IList<T> GetList(Func<T, bool> where, params Expression<Func<T, object>>[] navigationProperties) 
    { 
     List<T> list; 
     IQueryable<T> dbQuery = ((DbContext)this.context).Set<T>(); 

     //Apply eager loading 
     foreach (var navigationProperty in navigationProperties) 
     { 
      dbQuery = dbQuery.Include(navigationProperty); 
     } 

     list = dbQuery.AsNoTracking().Where(where).ToList(); 

     return list; 
    } 

回答

1

可以使用由Brian諾伊斯(的"Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET"作者)創建BindingListView

BindingListView .NET library

或實現自己的。如果您有更具體的問題,請詢問

+0

我也在調查圍繞數據集的包裝 – 2014-08-28 06:55:42

+0

我問了一個相關的問題http://stackoverflow.com/questions/25558450/notifying-bindingsource-position-using-2-way-binding-in-winforms-to- select- – 2014-08-28 22:21:14

+0

還使用Nuget的Equin.ApplicationFramework.BindingListView https://github.com/waynebloss/BindingListView – 2014-09-04 20:49:19

0

Microsoft提供了一個很好的文章,用於在傳統BindingList上實現IBindingListView。

Behind the Scenes: Implementing Filtering for Windows Forms Data Binding

有關此接口的主要的混亂,是過濾器特性是一個字符串,存在用於表達式的格式沒有標準。因此,您需要知道您將支持(或需要支持)作爲字符串表達式。如果您希望在屬性「國家/地區」的「特朗普」表達式過濾器中輸入值「美國」,而不是「國家=美國」,則可以這樣做。

如果您想完成DataSet表達式支持的完整副本,這可能會變得非常複雜。