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
相关产品推荐
相关产品推荐

