使用枚举进行Kendo Grid过滤

时间:2013-04-11 20:23:32

标签: kendo-ui kendo-grid

我的模型包含一个枚举,我希望在通过AJAX加载网格时对其进行过滤。

.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)),这会导致模型中Int32的无效转换错误,这是Add方法所期望的。

使用Razor可以解决这个问题,还是一个JavaScript修复程序?

1 个答案:

答案 0 :(得分:0)

您的x.Status是什么数据类型?如果它是一个int,那么你不需要强制转换它,只有枚举:

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