在一行中选择多个单元格,然后找到它们的总和kendo ui



我需要获得一行中多个单元格的选定值,并使用kendo grid ui jquery找到它们的和。

是否可以选择多个列,并在每行上找到总和,并将结果显示为另一列。所选列和结果格式

  1. selectable.mode属性设置为multiple, cell
  2. change事件中,通过调用this.select()获取所选单元格
  3. 通过调用Object.values仅获取所选单元格的值
  4. 筛选值以仅返回<td />元素的值
  5. 映射过滤后的值以仅返回转换后的元素内部文本
  6. 通过将值相加来减少筛选和映射的值

示例:

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);
}

Fiddle:https://dojo.telerik.com/oNUJaxiG

更新

在问题评论中进行了一些讨论后,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}`);
});
}

Fiddle:https://dojo.telerik.com/unOTesaD

相关内容

最新更新