过滤Kendo UI MVC网格时的自定义谓词构建

科夫卡

我正在使用带有服务器包装的ASP.NET MVC Kendo UI。

IQueryable扩展方法ToDataSourceResult当前创建查询,例如

 myQuery.Where(x=>x.SearchField.Contains(searchString))

当使用包含运算符进行过滤时。

不幸的是,我使用的是非SQL数据库RavenDb,它的linq提供程序不支持contains方法。相反,它为IQueryable提供了扩展,称为搜索。所以当进行全文搜索时,我应该写

 myQuery.Search(x=>x.SearchField, searchString)

代替Where子句。这就是为什么我很好奇有没有机会覆盖默认谓词构建器?现在,我正在这样做(这是非常基本的实现):

   public static IQueryable<TEntity> ApplyFiltering<TEntity>(this IQueryable<TEntity> queryable, IList<IFilterDescriptor> filters) where TEntity:class
    {
        foreach (var filter in filters.Cast<FilterDescriptor>()){

            var pe = Expression.Parameter(typeof(TEntity), "x");
            var left = Expression.Property(pe, typeof(TEntity).GetProperty(filter.Member));
            queryable = queryable.Search(Expression.Lambda<Func<TEntity, object>>(left, new ParameterExpression[] { pe }), filter.Value.ToString());
        }
        filters.Clear();

        return queryable;
    }

//And controller code:

    public ActionResult Data_Read([DataSourceRequest] DataSourceRequest request)
    {
            var query = repository.GetQueryable();
            query = query.ApplyFilters(request.Filters);
            return Json(query.ToDataSourceResult(request));
    }

这是正确的解决方法吗?还是我在文档中找不到更明显的解决方案?

海夫拉斯(Stef Heyenrath)

有趣的问题。

我认为Kendo MVC Wrappers中没有任何可插入功能来更改此设置。您可以看一下源代码:Kendo.Mvc.Extensions.FilterTokenExtensions并可能更改它。

但是,您也可以在github上修改我的项目:KendoGridBinderEx,看看文件FilterObject.cs。

更改代码:

switch (op)
{
    ...

    case "contains":
        exStr = string.Format("{0}{2}.Contains({1})", field, param, caseMod);
        break;

    ...

switch (op)
{
    ...

    case "contains":
        exStr = string.Format("{0}{2}.Search({1})", field, param, caseMod);
        break;

    ...

请让我知道这是否有效。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Kendo UI Mobile listview的自定义过滤器?

来自分类Dev

Kendo UI-2个日期之间的网格/过滤器菜单自定义

来自分类Dev

自定义Kendo UI的网格

来自分类Dev

Kendo ui网格,合并过滤

来自分类Dev

如何使用下拉列表过滤Kendo UI MVC网格

来自分类Dev

在MVC中使用条件授权角色显示自定义命令按钮Kendo UI网格

来自分类Dev

使用jquery / javascript单击自定义命令时,kendo Web ui网格批量编辑

来自分类Dev

Kendo UI网格中的自定义命令

来自分类Dev

自定义Kendo UI网格页脚-动态更新

来自分类Dev

自定义Kendo UI网格页脚-动态更新

来自分类Dev

Kendo UI网格,带有模板列和过滤

来自分类Dev

包含数组的Kendo UI网格过滤器单元

来自分类Dev

禁用kendo-ui网格多列过滤

来自分类Dev

包含数组的Kendo UI网格过滤器单元

来自分类Dev

如何使用ASP.NET MVC包装器自定义Kendo UI网格删除确认对话框?

来自分类Dev

过滤kendo ui调度程序

来自分类Dev

Kendo MVC网格过滤器自定义不起作用

来自分类Dev

如何自定义Kendo UI网格行的所选背景颜色

来自分类Dev

为自定义Kendo UI网格按钮添加“活动”颜色

来自分类Dev

kendo ui网格日期列-控制过滤操作发送的日期格式

来自分类Dev

kendo ui网格过滤器,服务器中的排序和分页

来自分类Dev

我想在Kendo UI网格上显示已应用的过滤条件

来自分类Dev

kendo ui网格过滤器不适用于整数类型的列

来自分类Dev

Kendo UI网格数据源在过滤器上触发额外的Ajax请求

来自分类Dev

我想在Kendo UI网格上显示已应用的过滤条件

来自分类Dev

导出 CSV - 带有过滤器的 Kendo UI 网格

来自分类Dev

如何在Kendo ui Grid MVC中更改默认过滤器运算符

来自分类Dev

在数字数组上使用ASP.NET MVC中的Kendo UI ComboBox进行过滤

来自分类Dev

用户停止键入后,Kendo UI MVC自动完成服务器过滤

Related 相关文章

  1. 1

    Kendo UI Mobile listview的自定义过滤器?

  2. 2

    Kendo UI-2个日期之间的网格/过滤器菜单自定义

  3. 3

    自定义Kendo UI的网格

  4. 4

    Kendo ui网格,合并过滤

  5. 5

    如何使用下拉列表过滤Kendo UI MVC网格

  6. 6

    在MVC中使用条件授权角色显示自定义命令按钮Kendo UI网格

  7. 7

    使用jquery / javascript单击自定义命令时,kendo Web ui网格批量编辑

  8. 8

    Kendo UI网格中的自定义命令

  9. 9

    自定义Kendo UI网格页脚-动态更新

  10. 10

    自定义Kendo UI网格页脚-动态更新

  11. 11

    Kendo UI网格,带有模板列和过滤

  12. 12

    包含数组的Kendo UI网格过滤器单元

  13. 13

    禁用kendo-ui网格多列过滤

  14. 14

    包含数组的Kendo UI网格过滤器单元

  15. 15

    如何使用ASP.NET MVC包装器自定义Kendo UI网格删除确认对话框?

  16. 16

    过滤kendo ui调度程序

  17. 17

    Kendo MVC网格过滤器自定义不起作用

  18. 18

    如何自定义Kendo UI网格行的所选背景颜色

  19. 19

    为自定义Kendo UI网格按钮添加“活动”颜色

  20. 20

    kendo ui网格日期列-控制过滤操作发送的日期格式

  21. 21

    kendo ui网格过滤器,服务器中的排序和分页

  22. 22

    我想在Kendo UI网格上显示已应用的过滤条件

  23. 23

    kendo ui网格过滤器不适用于整数类型的列

  24. 24

    Kendo UI网格数据源在过滤器上触发额外的Ajax请求

  25. 25

    我想在Kendo UI网格上显示已应用的过滤条件

  26. 26

    导出 CSV - 带有过滤器的 Kendo UI 网格

  27. 27

    如何在Kendo ui Grid MVC中更改默认过滤器运算符

  28. 28

    在数字数组上使用ASP.NET MVC中的Kendo UI ComboBox进行过滤

  29. 29

    用户停止键入后,Kendo UI MVC自动完成服务器过滤

热门标签

归档