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

KendoUI Grid ClientFooterTemplate函数全选时返回值未正常显示问题

问题根本原因

Kendo Grid的ClientFooterTemplate仅会在数据源触发变更事件、或Grid主动执行重绘/刷新操作时,才会重新计算并更新表尾内容。你单独勾选单行复选框时,操作隐式触发了关联的行状态变更连带的footer刷新逻辑;但全选复选框的点击事件仅修改了所有复选框的选中状态,没有主动触发Grid表尾的重绘操作,所以虽然函数计算返回值正确,但界面不会同步更新。


修复方案

1. 全选逻辑末尾主动触发Grid刷新

在你的全选复选框点击事件回调末尾,添加代码强制Grid重绘,触发表尾重新计算渲染:

// 全选操作逻辑示例
$("#headerCheckAll").on("click", function() {
    const isChecked = $(this).is(":checked");
    // 修改复选框状态后主动触发change事件,同步状态到Grid数据
    $(".chkbx").prop("checked", isChecked).trigger("change");
    // 强制Grid刷新,更新表尾
    $("#grid").data("kendoGrid").refresh();
})

如果不需要重新请求后端接口,用refresh()方法即可;如果需要同步后端数据,可以换成$("#grid").data("kendoGrid").dataSource.read()。

2. 优化现有求和函数(可选,提升性能)

删除原有冗余的重复获取Grid实例、索引遍历逻辑,优化后代码如下:

function check_sum_ook09(a) {
    const grid = $("#grid").data("kendoGrid");
    if (!a) {
        // 手动勾选模式:统计选中行字段值
        let sum = 0;
        $(".chkbx:checked").each(function() {
            const dataItem = grid.dataItem($(this).closest("tr"));
            sum += dataItem.OOK_09 || 0;
        });
        return sum.toLocaleString("ko-KR");
    } else {
        // 全选模式:统计当前页所有行字段值
        let sum = 0;
        grid.dataSource.view().forEach(row => {
            sum += row.OOK_09 || 0;
        });
        return sum.toLocaleString("ko-KR");
    }
}

3. 绑定语法校验

确认你Grid的ClientFooterTemplate绑定语法为#= check_sum_ook09(对应参数) #,不要使用#:编码输出语法,避免返回值被转义无法正常展示。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:15:03