如何在Kendo Grid中的不同列中添加不同的过滤器?

时间:2016-03-17 07:20:17

标签: kendo-ui kendo-grid kendo-asp.net-mvc

我有一个包含多个列的kendo网格,一个基于int属性,另一个基于字符串属性。

我正在尝试使用不同的运算符过滤列,并添加了以下代码:

.Filterable(ftb => ftb.Extra(false)
.Operators(op => op
    .ForNumber(num => num
            .Clear()
            .IsGreaterThanOrEqualTo(">="))
    .ForString(str =>
        str.Clear()
            .Contains("Contains"))))

然而,出于某种原因,上述情况并不奏效。在不同列上使用不同运算符的最佳方法是什么?我可以在某些列上指定过滤器运算符吗?

有没有办法在除一列之外的所有列上指定3个运算符,并且该特殊列使用不同的运算符?

1 个答案:

答案 0 :(得分:1)

可以为网格定义过滤器选项,然后单独为每个列定义,这似乎会覆盖网格设置。

@(Html.Kendo().Grid<SomeType>()
    .Columns(columns =>
    {
        columns.Bound(c => c.StringProperty1)
                .Filterable(f => f.Operators(op => op.ForString(str =>
                        str.Clear().Contains("Contains1234"))
                ));
        columns.Bound(c => c.StringProperty2);
        columns.Bound(c => c.IntProperty);
    })
    .Filterable(f => f.Operators(op => op

            .ForNumber(num =>
                num.Clear()
                .IsGreaterThanOrEqualTo(">="))
            .ForString(str =>
                str.Clear()
                .Contains("Contains5678"))
    ))
    .Name("Grid")
)

在上面的示例中,StringProperty1将获得Contains1234过滤器,StringProperty2将获得Contains5678过滤器。