2013-04-11 57 views
3

我的模型包含一个枚举,我希望在通过AJAX加载时过滤网格。Kendo使用枚举的网格过滤

.cshtml代码:

@(Html.Kendo().Grid() 
    .Name("Grid") 
    .Columns(columns => 
     { 
      columns.Bound(x => x.Type); 
      columns.Bound(x => x.Status); @*This is my enum*@ 
     }) 
    .Filterable() 
    .DataSource(ds => ds 
         .Ajax() 
         .ServerOperation(true) 
         .Filter(filter => filter.Add(x => x.Status).IsEqualTo(MyEnum.Updated)) 
         .Read(read => read.Action("QueryAlerts", "Alert")))) 

在AJAX POST滤波器请求跨越打算作为Status~eq~'updated'并返回一个错误Input string was not in a correct format

我删除了数据源上的过滤,并使用过滤控件查看该请求通常如何通过,如下所示:Status~eq~2

我试着将过滤器值转换为整数(例如filter.Add(x => (int)x.Status).IsEqualTo((int)MyEnum.Updated)),并导致从Add方法预期的模型中Int32发生无效的转换错误。

这个问题可以使用Razor解决,或者这是一个JavaScript修复?

回答

0

什么数据类型是你的x.Status?如果它是一个int,那么你不需要施放它,只需要枚举:

filter.Add(x => x.Status).IsEqualTo((int)MyEnum.Updated)