连续选择多个单元格并找到它们的总和 jquery - kendo ui
Posted
技术标签:
【中文标题】连续选择多个单元格并找到它们的总和 jquery - kendo ui【英文标题】:Select multiple cells in a row and find their sum jquery - kendo ui 【发布时间】:2022-01-07 00:07:22 【问题描述】:我需要连续获取多个单元格的选定值并使用 kendo grid ui jquery 找到它们的总和。
是否可以选择多列并找到每一行的总和并将结果显示为另一列.selected column and result format
【问题讨论】:
你想如何选择行/单元格?你试过什么? 您好,我需要选择列并找到每一行的总和并将结果显示为另一列。 大卫的回答已经告诉你怎么做。 从给定的示例中,我们能够计算所有选定行的总和。但是如果我选择 2 列和 3 行,我需要分别找到每行的总和并将结果显示在不同的列中。 你为什么不把这件事告诉大卫,这样他才能改进他的答案? 【参考方案1】:-
将
selectable.mode
属性设置为multiple, cell
。
在change
事件中,调用this.select()
获取选中的单元格
通过调用Object.values
仅获取选定单元格的值
过滤值以仅返回 <td />
元素的值
将过滤后的值映射为仅返回转换后的元素内部文本
通过将值相加来减少过滤和映射的值
例子:
change: function()
var selectedCells = Object.values(this.select())
.filter(function(value)
return value && value.nodeName && value.nodeName == 'TD';
)
.map(function(td)
return Number(td.innerText);
);
var total = selectedCells.reduce(function(a, b)
return a + b;
, 0);
console.log(total);
小提琴:https://dojo.telerik.com/oNUJaxiG
更新
在问题 cmets 中进行了一些讨论后,OP 明确表示他们需要每个单独的行与选定单元格的总和。在这种情况下,change
方法将需要稍微修改以基本上按行分组:
change: function()
var selectedCells = Object.values(this.select())
.filter(function(value)
return value && value.nodeName && value.nodeName == 'TD';
);
var selectedRows = ;
$.each(selectedCells, function(index, cell)
var parent = cell.parentNode.getAttribute('data-uid');
if (Object.keys(selectedRows).indexOf(parent) < 0)
selectedRows[parent] = [];
selectedRows[parent].push(Number(cell.innerText));
);
$.each(Object.keys(selectedRows), function(index, key)
var row = selectedRows[key];
var total = row.reduce(function(a, b)
return a + b;
, 0);
console.log(`Row $key total: $total`);
);
小提琴:https://dojo.telerik.com/unOTesaD
【讨论】:
查看问题cmets。以上是关于连续选择多个单元格并找到它们的总和 jquery - kendo ui的主要内容,如果未能解决你的问题,请参考以下文章