基于EF4部分类属性值过滤DevExpress网格

时间:2011-08-05 20:37:47

标签: c# linq entity-framework filter devexpress

好的,所以我对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 partial:

public partial class Review
{
    public bool IsCurrent
    {
       if (something)
           return true;
       else
           return false;
    }   
}

DevExpress过滤字符串:

filter [IsCurrent] = true

如果我将过滤器更改为:filter [Name ='Test'],它可以正常运行并向我显示所有名称为test的记录。恢复为[IsCurrent] = true只显示一个空集。我确信结果集包含应显示的有效数据。

有什么想法吗?如果我尝试过滤在partial类中创建的值,但它适用于从生成的实体模型中获取的值,它似乎不起作用。

2 个答案:

答案 0 :(得分:1)

this community devexpress thread上,您将找到有关使用LinqServerModeDataSource定制属性的限制的说明(请参阅:背心回复)。取决于您的约束以找到另一种解决方案。

答案 1 :(得分:0)

更改过滤器后,您可能需要重新绑定数据或刷新基础数据。