我正在使用C#win-form应用。
在我的表单中,我有与绑定源绑定的Data-Grid-View和绑定源数据源是实体框架的表。
当我使用实体框架时,我无法使用绑定源的过滤器和按数据网格视图的列排序,但是当我不使用实体框架时,我可以使用它们。 我如何在实体框架中使用它们?
表单加载时的代码
contex = new myEntity();
myBindingSource.DataSource = contex.myTable;
答案 0 :(得分:4)
每个BindingSource都有一个属性 SupportsFiltering (以及 SupportsSorting )。如果您将 entitySet设置为DataSource ,这两个属性会自动设置为 false !所以有一些可能的解决方案。您可以使用IEnumberable<T>
向Linq2Entities
提供扩展方法,也可以选择使用myEntity context = new myEntity();
myBindingSource.DataSource = (from m in context.myTable
where m.PROPERTY MEETS CONDITION
select m).ToList<TYPE>();
进行过滤/排序。
Linq2Entities 的代码段可以是:
// extension method
public static IEnumerable<T> Filter<T>(this IEnumerable<T> list, Func<T, bool> filterParam) {
return list.Where(filterParam);
}
// filtering example
context.myTable.Filter(x => x.ItemName.StartsWith("Test"))
扩展程序的代码段:
{{1}}
此外,此主题已经多次讨论过,即使在here上也是如此。
答案 1 :(得分:0)
您标记了实体框架,但未显示您的模型。假设MyEntity是您的ObjectContext或DBContext,您可以绑定到DbSet的local property,这是一个支持排序的可观察集合。
myBindingSource.DataSource = contex.myTable.Local;