Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何强制剑道网格在列上使用数字过滤器_C#_Kendo Ui_Kendo Grid_Kendo Asp.net Mvc - Fatal编程技术网

C# 如何强制剑道网格在列上使用数字过滤器

C# 如何强制剑道网格在列上使用数字过滤器,c#,kendo-ui,kendo-grid,kendo-asp.net-mvc,C#,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,使用以下代码,剑道网格对t.Files.Count使用字符串过滤器接口,即使类型是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.Files.Count
使用字符串过滤器接口,即使类型是
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()
)
@(Html.Kendo().Grid())
.名称(“网格”)
.列(列=>{
columns.Bound(t=>t.ID).Width(80);
columns.Bound(t=>t.OrbitalPeriod);
columns.Bound(t=>t.Files.Count);
})
.Sortable()
.可过滤()
.DataSource(DataSource=>DataSource.Ajax()
.页面大小(20)
.Read(Read=>Read.Action(“Targets\u Read”,“Targets”))
)
.可调整大小(o=>o.Columns(true))
.column菜单()
)
为字符串生成筛选菜单:


我使用的是Kendo.MVC 2013.1.514.340

解决方案是在模型中指定值为
int
-将
数据源
方法更改为:

.DataSource(dataSource => dataSource.Ajax()
    .PageSize(20)
    .Read(read => read.Action("Targets_Read", "Targets"))
    .Model(m => {
        m.Field<int>(t => t.Files.Count);
    })
)
.DataSource(DataSource=>DataSource.Ajax()
.页面大小(20)
.Read(Read=>Read.Action(“Targets\u Read”,“Targets”))
.Model(m=>{
m、 字段(t=>t.Files.Count);
})
)

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

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

当数据类型为“number”时,我遇到了类似的问题,当过滤器用于数据类型string时,如果在声明模式时存在差异,就会发生这种情况,确保架构中声明的字段正确无误,即与要获取/提供给网格的数据同名。

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()
方法可能是最好的方法。

这正是我想要的