如何用jQuery获取Kendo.Grid页脚总计文本?现有代码无输出求解
如何获取Kendo Grid页脚中的总计文本?
我看了你的代码,发现问题主要出在选择器拼写和DOM依赖上,下面给你一步步解决:
1. 先解决最直接的问题:选择器大小写错误
你初始化Grid用的是$("#TicketReportPropertyGrid"),但获取页脚时的选择器写成了$('#TicketreportPropertyGrid')——注意Report里的大写R在第二个选择器里变成小写了!jQuery的ID选择器是严格区分大小写的,这直接导致你找不到目标元素,所以text()返回空,控制台自然没输出。
修正拼写后的DOM获取代码:
function DeleteRecord(e) { e.preventDefault(e); var grid = $("#TicketReportPropertyGrid").getKendoGrid(); var row = $(e.target).closest("tr"); var dataItem = grid.dataItem(row); dataItem.deleted = true; row.addClass('disabledGridRow'); // 修正ID的大小写拼写 var totalArea = $('#TicketReportPropertyGrid table tfoot .k-footer-template td').eq(2).text(); console.log(totalArea); }
2. 更稳妥的方案:不依赖DOM,直接从Grid数据源拿聚合值
直接操作DOM容易受Kendo版本更新、模板结构变化影响,更可靠的方式是利用Kendo Grid的数据源聚合API来获取总计值,不用去抓页脚文本。
假设你的Grid数据源配置了类似这样的聚合规则:
dataSource: { // 其他配置项... aggregate: [ { field: "Amount", aggregate: "sum" } ] // 假设金额字段是Amount }
那你可以直接从数据源的聚合结果中取值:
function DeleteRecord(e) { e.preventDefault(e); var grid = $("#TicketReportPropertyGrid").getKendoGrid(); var row = $(e.target).closest("tr"); var dataItem = grid.dataItem(row); dataItem.deleted = true; row.addClass('disabledGridRow'); // 从数据源聚合结果中获取总计值 var aggregates = grid.dataSource.aggregates(); var totalAmount = aggregates.Amount.sum; // 按需拼接成页脚的文本格式 var totalText = `Total: ${totalAmount}`; console.log(totalText); }
这种方式完全脱离DOM结构,不管页脚模板怎么改,都能准确拿到计算后的总计值,避免各种选择器相关的坑。
3. 简化DOM选择器(如果坚持用DOM方式)
如果还是想通过DOM获取,可以用Kendo Grid自带的类名简化选择器,减少出错概率:
var totalArea = $("#TicketReportPropertyGrid .k-grid-footer .k-footer-template td").eq(2).text();
内容的提问来源于stack exchange,提问作者gene
相关产品推荐
相关产品推荐

