首页 > 解决方案 > Kendo MVC Grid Filtering - 考虑多个字段的过滤器

问题描述

我有一个 MVC Kendo 网格,其中一列是实际使用多个字段的客户端模板。默认情况下,内置过滤仅应用于列绑定的字段。我如何覆盖它,以便它考虑这两个字段。即,当我搜索“包含”“De”时,应返回显示“Detroit, MI”的列。

这是我到目前为止所拥有的:

MVC 视图

        @(Html.Kendo().Grid<ViewModel>()
        .DataSource(dataSource => dataSource
            .Custom()
            .Transport(t =>
            {
                t.Read(r => r.Action("StatusGridRead", "DeviceStatus"));
            })
            .Schema(schema => schema
                .Data("Result.Data")
                .Total("Result.Total")
                .Errors("Result.Errors")
            .Model(m =>
            {
                m.Id(f => f.Id);
                m.Field(f => f.StateOrProvince);
                m.Field(f => f.City);
                ...
            })
            )
        )
        .Columns(columns =>
        {
            columns.Bound(c => c.StateOrProvince).Title("City & State").ClientTemplate("#=City#, #=StateOrProvince#");
            ...
        })
        .Events(e=>
        {
            e.Filter("statusGridFilter");
        })
        .Sortable()
        .Filterable(f =>
        {
            f.Extra(false);
            f.Operators(o => o.ForString(s =>
            {
                s.Clear();
                s.Contains("Contains");
                s.IsEqualTo("Is Equal To");
                s.StartsWith("Starts With");
                s.EndsWith("Ends With");
                s.DoesNotContain("Does Not Contain");
                s.IsNotEqualTo("Is Not Equal To");
            }));
        })
        ) 

Javascript

function statusGridFilter(e) {
    if (e.field == "StateOrProvince") {
        //What do I do here? 
    }
}

我知道如果我为城市和州创建了一个列来解决这个问题,但是我实际上有一个类似的场景(显示了许多字符串字段的客户端模板),它不起作用,我只是选择这个作为最简单的例子. 除了为 1 个字段制作 1 列之外,我对任何其他可能解决此场景过滤的想法持开放态度。

标签: kendo-gridkendo-asp.net-mvc

解决方案


推荐阅读