如何强制Kendo Grid在列上使用数字过滤器

时间:2014-07-04 12:33:19

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

使用以下代码,即使类型为t.Files.Count,Kendo Grid也会使用int的字符串过滤器接口。如何强制网格改为使用数字滤镜UI?

@(Html.Kendo().Grid<GJW_Site.Web.Models.TargetsModel>()    
    .Name("grid")
    .Columns(columns => {
        columns.Bound(t => t.ID).Width(80);
        columns.Bound(t => t.OrbitalPeriod);
        columns.Bound(t => t.Files.Count);
    })
    .Sortable()
    .Filterable()
    .DataSource(dataSource => dataSource.Ajax()
        .PageSize(20)
        .Read(read => read.Action("Targets_Read", "Targets"))
    )
    .Resizable(o => o.Columns(true))
    .ColumnMenu()
)

为字符串生成过滤器菜单:

Filter menu

我正在使用Kendo.MVC 2013.1.514.340

4 个答案:

答案 0 :(得分:3)

解决方案是在模型中指定值为int - 更改DataSource方法,如下所示:

.DataSource(dataSource => dataSource.Ajax()
    .PageSize(20)
    .Read(read => read.Action("Targets_Read", "Targets"))
    .Model(m => {
        m.Field<int>(t => t.Files.Count);
    })
)

答案 1 :(得分:1)

您也可以使用此解决方案:

.DataSource(dataSource => dataSource.Ajax()
    .PageSize(20)
    .Read(read => read.Action("Targets_Read", "Targets"))
    .Model(m => {
        m.Field("Files.Count", typeof(System.Int32));
    })
)

答案 2 :(得分:0)

当过滤器出现数据类型字符串而我的数据类型为&#34; number&#34;时,我遇到了类似的问题,如果在声明模式时存在差异,请确保在模式中声明字段是正确的,即与您获取/提供给网格的数据具有相同的名称。

答案 3 :(得分:0)

Kendo将能够为每列选择正确的过滤器类型,但您必须在TargetsModel中使用属性而不是字段

例如,使用此:

public class TargetsModel
{
    public int ID { get; set; }
    public string OrbitalPeriod { get; set; }
    ...
}

而不是:

public class TargetsModel
{
    public int ID;
    public string OrbitalPeriod;
    ...
}

如果由于某种原因你无法做到这一点,.Model()方法可能是最好的方法。