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

Kendo Grid MVC中dataItem.set修改值后页面未更新显示问题

问题原因与修复方案

incell编辑模式下Kendo Grid会锁定正在编辑的行的UI渲染,加上Total列设置为不可编辑,调用dataItem.set()后未主动触发行重绘是视图不更新的核心原因,同时现有数值计算逻辑存在类型异常风险。

修复步骤

  • 第一步:修正数值计算逻辑,强制把A、B列的值转为数字,避免字符串拼接得到错误结果
  • 第二步:更新Total值前先关闭当前编辑状态,解除UI渲染锁
  • 第三步:更新值后主动刷新对应行,触发不可编辑列的UI更新
  • 冗余的副本数据源过滤逻辑可以直接删除,无实际作用

修改后代码

function onChange(e) {
    if (e.action == "itemchange" && e.field != "HoursYTD") {
        var editItemModelId = e.items[0].EmpNumber;
        var grid = $("#Grid").data("kendoGrid");
        var dataItem = grid.dataSource.get(editItemModelId);
        CurrentEditCell = e.field;

        // 强制转数值,空值或非数值默认取0,避免计算异常
        var valA = Number(e.items[0].A) || 0;
        var valB = Number(e.items[0].B) || 0;
        var HoursYTD = valA + valB;

        // 先关闭当前编辑状态,解除UI渲染锁
        grid.closeCell();
        
        // 更新数据源字段值
        dataItem.set("Total", HoursYTD);
        
        // 主动刷新当前行,触发Total列UI更新
        var targetRow = grid.tbody.find("tr[data-uid='" + dataItem.uid + "']");
        grid.refreshRow(targetRow);
    }
}

可选验证项

如果修改后仍未生效,检查模型定义中Total字段名是否和Razor列绑定的字段名完全一致,Kendo DataSource对字段名大小写敏感,拼写或大小写不匹配也会导致视图不更新。

内容的提问来源于stack exchange,提问作者sandeep

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:57:01