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

Kendo UI Grid列条件式工具提示不生效问题求助

Kendo UI Grid列条件式工具提示不生效问题求助

我之前在做Kendo UI Grid自定义命令列的时候,也碰到过一模一样的坑!你现在的情况是把Kendo的模板表达式直接写在HtmlAttributes的title里了,但框架根本不会解析这个表达式——因为HtmlAttributes里的属性是直接渲染成纯HTML属性的,不会触发Kendo的模板编译逻辑,所以就把整个#= ... #的字符串直接当成tooltip文本显示了。

给你个亲测有效的解决方案,分两步来改:

第一步:调整Grid列的配置

先把HtmlAttributes里的title去掉,换成一个自定义的CSS类,方便后面JS里快速定位到这个按钮:

columns.Command(command => command.Custom("Address")
    .Click("AddressList.Address")
    .Text("<span class='fas fa-pencil-alt fa-fw'></span>")
    .HtmlAttributes(new { @class = "address-edit-btn" }) // 新增专属类用于定位
);

第二步:通过Grid的dataBound事件动态设置Tooltip

Kendo Grid的dataBound事件会在数据加载完成(包括分页、排序、刷新操作后)自动触发,我们可以在这里遍历每一行数据,根据数据项的条件给按钮设置对应的tooltip文本:

function onGridDataBound(e) {
    const grid = e.sender;
    // 遍历Grid的所有数据行
    grid.tbody.find("tr").each(function() {
        // 获取当前行对应的数据项
        const dataItem = grid.dataItem(this);
        // 找到当前行的地址编辑按钮
        const editBtn = $(this).find(".address-edit-btn");
        
        // 根据条件计算要显示的tooltip文本
        const tooltipText = (!dataItem.IsSynced && !dataItem.AddressNickname.includes('NA')) 
            ? 'This can be updated in the details tab' 
            : 'Edit Address';
        
        // 给按钮设置title属性(也就是tooltip)
        editBtn.attr("title", tooltipText);
    });
}

最后别忘了在Grid的主配置里绑定这个dataBound事件:

@(Html.Kendo().Grid<YourModel>()
    .Name("YourGridName")
    .Events(events => events.DataBound("onGridDataBound"))
    // 其他Grid配置项...
)

额外小提醒

  • 要确保AddressNickname字段是字符串类型,不然includes方法可能会报错;如果字段可能为null,建议加个判空处理,比如dataItem.AddressNickname?.includes('NA') ?? false
  • 用dataBound事件的好处是,不管Grid数据怎么更新(比如分页切换、数据刷新),tooltip都会跟着重新计算,不会出现数据变了tooltip没同步的情况

这个方案是我当时踩坑后折腾出来的,绝对能解决你的问题!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 07:14:51