使用以下代码,即使类型为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()
)
为字符串生成过滤器菜单:
我正在使用Kendo.MVC 2013.1.514.340
答案 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()
方法可能是最好的方法。