基于EF4部分类属性值的DevExpress网格过滤
本文关键字:DevExpress 网格 过滤 属性 EF4 分类 基于 | 更新日期: 2023-09-27 18:04:34
好的,所以我对DevExpress有点不熟悉,我正在跳入一个现有项目的中间,该项目大量使用绑定到LinqDataSource
的DevExpress网格并利用网格内置过滤。下面是我正在查看的内容的快速概述:
- 网格绑定到一个名为"Review"的EF4实体集合。
- 我通过一个包含一个名为"IsCurrent"属性的部分类扩展了Review实体。IsCurrent包含一些返回布尔值的逻辑。
- Grid的初始数据源包含当前用户可能看到的所有评论。
- 我们利用DevExpress的内置功能来保存网格布局。使用Filter Builder,我们可以过滤Review实体的本地属性(即存在于生成的实体模型中的属性)。因此,如果"Name"是Review实体的成员,那么在
[Name]='Test'
上进行过滤就可以了。
我真正想做的是过滤器也基于我在部分类"IsCurrent"中创建的属性。然而,当我修改保存在数据库中的过滤器字符串并将[IsCurrent]=true
添加到过滤器字符串时,我得到一个完全空的结果集。我试着把它切换到false,但它仍然是空的。
是否有可能对部分类的成员而不是生成的实体模型的属性进行过滤?如果没有,是否有一个可接受的解决方案?
下面是一些示例代码,说明了一些重要的部分(尽管非常简化):
protected void LinqServerModeDataSource1_OnSelecting(object sender,
LinqServerModeDataSourceSelectEventArgs e)
{
e.QueryableSource = GetAllRecords();
}
Review.cs部分:
public partial class Review
{
public bool IsCurrent
{
if (something)
return true;
else
return false;
}
}
DevExpress filter string:
filter[IsCurrent] = true
如果我将过滤器更改为:filter[Name='Test'],它工作得很好,并显示了所有名称为Test的记录。返回到[IsCurrent]=true只会显示一个空集合。我确信结果集包含应该显示的有效数据。
任何想法?如果我尝试过滤在部分类中创建的值,似乎它不起作用,但适用于从生成的实体模型获得的值。
在这个社区devexpress线程中,您将找到对使用LinqServerModeDataSource自定义属性的限制的解释(参见:Vest回复)。取决于你的约束条件来找到另一个解。
您可能需要在更改过滤器后重新绑定数据或刷新底层数据。