我想在Kendo Grid的列中添加一个过滤器。它应该如下所示:
我试过
columns.Bound(e => e.Status).Filterable(ftb => ftb.Multi(true)).CheckAll(false)` and `.Filterable(filterable => filterable.Extra(false).Mode(GridFilterMode.Menu)
看起来像这样
我无法捕捉复选框检查操作,我也需要禁用按钮,外观和感觉与实际不同。所以我想我可以使用ItemTemplate选项。这是我试过的代码
columns.Bound(e => e.Status).Filterable(ftb => ftb.Multi(true).ItemTemplate("funcStatus")) <script>function funcStatus()
{
alert("hello");
}</script>
它正在显示&#34; funcStatus&#34;未定义。 ItemTempalte函数有什么问题?如何更改过滤器弹出窗口的外观?
答案 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列的值和过滤器名称应相同,以使过滤器无差别地工作。