You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:57:32