使用DataGridView和Entity Framework的Bindingsource过滤器

时间:2016-07-11 17:38:29

标签: c# entity-framework datagridview bindingsource

我正在使用Entity Framework开发我的第一个Winforms应用程序来访问数据库。我有使用datasettableadapter的经验。

我有一张带有DataGridView(DGV)的表单,我想过滤显示的数据。

在之前的应用程序中,为了过滤数据,我在bindingsource中使用了filter属性,因为这允许我将“SQL like”cmds添加到bindingsource。此外,这将让我构建一个通用的过滤器组件,连接到DGV,就像在DevExpress中一样。这是一个要求,因为我正在迁移一个大型应用程序(600个表,400个视图和600个存储过程),我需要建立我的通用库,以提高我的工作效率。

我找了这个问题并找到了一些答案。其中最准确的是here

正如帖子所说,应该分配给bindingsource.datasource的组件必须实现IBindingListView接口。

当我尝试将context.tableName.local分配给该媒体资源时,可能会调用toArray()toBindingList()toList(),而这些资源都没有实现IBindingList接口

帖子后分辨率表明BindingListView组件(http://www.sf.net/projects/blw)解决了问题,但我仍然没有意识到如何将过滤器作为字符串传递。也许我遗漏了一些东西,但文档(http://blw.sourceforge.net/)没有帮助。

也许有人可以提供一些指导来解决问题。使用Linq进行过滤首先不是解决方案,因为我将附加到模型/表中的字段,我正在寻找通用的东西。

最后一件事是我希望能够在DGV中添加/修改/删除数据。这并不重要,因为我始终可以将context.tableName.Local.ToBindingList()设置为bindingsource

通过在.where之前添加.load()子句来检索过滤数据似乎不是一个解决方案,因为我需要动态过滤并且负载已完成一次,因为我可以在其他帖子中看到(但也许我错了。

动态Linq将是一个解决方案,但在使用通配符和startwith / endwith方法过滤日期时遇到一些问题。

在这样的应用程序中使用EF可以吗?

0 个答案:

没有答案