"项目模板" Kendo Grid过滤器的功能显示未定义

时间:2017-06-12 06:51:29

标签: jquery kendo-grid kendo-asp.net-mvc

我想在Kendo Grid的列中添加一个过滤器。它应该如下所示:

enter image description here

我试过

columns.Bound(e => e.Status).Filterable(ftb => ftb.Multi(true)).CheckAll(false)` and `.Filterable(filterable => filterable.Extra(false).Mode(GridFilterMode.Menu)

看起来像这样

enter image description here

我无法捕捉复选框检查操作,我也需要禁用按钮,外观和感觉与实际不同。所以我想我可以使用ItemTemplate选项。这是我试过的代码

columns.Bound(e => e.Status).Filterable(ftb => ftb.Multi(true).ItemTemplate("funcStatus")) <script>function funcStatus()
{
alert("hello");
}</script>

它正在显示&#34; funcStatus&#34;未定义。 ItemTempalte函数有什么问题?如何更改过滤器弹出窗口的外观?

2 个答案:

答案 0 :(得分:2)

您可以Messages使用Filterable属性,如下所示:

.Filterable(filterable => filterable.Messages(m => { m.IsFalse("Invalid"); m.IsTrue("Valid"); m.Info("Show items with value:"); })

所以现在而不是过滤器说'真实&#39;它会说&#39;有效&#39;。如果您愿意,m.Info也只是过滤器的描述。

我从Telerik's example抓取了这个网格,并将其修剪为一个非常基本的网格。这就是你如何使用它。

@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.EmployeeViewModel>()    
    .Name("Grid")
    .Columns(columns => {
        columns.Bound(e => e.Status).ClientTemplate("#= Status ? 'Valid' : 'Invalid' #");;   
    })    
    .Filterable(filterable => filterable.Messages(m => { 
        m.IsFalse("Invalid"); m.IsTrue("Valid"); m.Info("Show items with value:"); 
    })   
    .DataSource(dataSource => dataSource
        .Ajax()
        .Read(read => read.Action("FilterMenuCustomization_Read", "Grid"))
     )
)

点击here查看Telerik的文档以获取更多信息。

答案 1 :(得分:0)

我使用BindTo函数获取过滤器名称。

columns.Bound(e => e.Status).Filterable(ftb => ftb.Multi(true).CheckAll(false).BindTo(
                            new[]{
                                new { Status = "Valid" },
                                new { Status = "Invalid"  }
                            }))

并且在Filterable中代码应该是这样的

.Filterable(filterable => filterable
                    .Extra(false)
                    .Mode(GridFilterMode.Menu)
                    )

注意:Status是一个字符串属性,映射到Status列的值和过滤器名称应相同,以使过滤器无差别地工作。