2013-04-11 79 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)