Kendo Grid列筛选布尔选项消息自定义失效问题咨询
Kendo Grid 2015.3.930 布尔多筛选选项文本替换解决方案
Kendo UI 2015.3.930版本中,启用Multi(true)的布尔列筛选时,IsTrue()和IsFalse()方法仅对单选项布尔筛选生效,多复选框模式下的选项文本不会读取这两个配置,因此导致设置无效。以下是可行的解决方法:
方法一:自定义筛选项模板
直接通过ItemTemplate渲染自定义文本,针对单个列生效:
columns.Bound(r => r.IsLinkable) .TitleWithTooltip("Linkable") .Filterable(f => f.Multi(true) .ItemTemplate("#= item.value ? 'Show X' : 'Show without X' #") .Messages(m => m.CheckAll("Check All").Cancel("Cancel").Filter("Filter")));
方法二:全局覆盖多筛选复选框渲染逻辑
通过JavaScript重写FilterMultiCheck的_createCheckBoxes方法,全局替换所有布尔多筛选的选项文本:
$(function() { // 保存原方法引用 var originalCreateCheckBoxes = kendo.ui.FilterMultiCheck.fn._createCheckBoxes; kendo.ui.FilterMultiCheck.fn._createCheckBoxes = function() { var data = this.dataSource.data(); // 遍历替换布尔值的显示文本 data.forEach(function(item) { if (typeof item.value === "boolean") { item.text = item.value ? "Show X" : "Show without X"; } }); // 调用原方法完成渲染 originalCreateCheckBoxes.call(this); }; });
方法三:手动指定筛选数据源
通过后端接口返回自定义的筛选选项,灵活控制文本和值:
前端代码
columns.Bound(r => r.IsLinkable) .TitleWithTooltip("Linkable") .Filterable(f => f.Multi(true) .DataSource(ds => ds.Read(read => read.Action("GetBooleanFilterOptions", "Home"))) .Messages(m => m.CheckAll("Check All").Cancel("Cancel").Filter("Filter")));
后端控制器代码
public class HomeController : Controller { public JsonResult GetBooleanFilterOptions() { var filterOptions = new List<object> { new { text = "Show X", value = true }, new { text = "Show without X", value = false } }; return Json(filterOptions, JsonRequestBehavior.AllowGet); } }
内容的提问来源于stack exchange,提问作者Mahbub
相关产品推荐
相关产品推荐

