更新多行 - Kendo JQuery 网格

Update Multiple Rows - Kendo JQuery Grid

我正在使用 cellClose 事件来更新单元格值,它在选定行的值内起作用。我有一个名为 Total 的最后一行,它是列 D

的值的总和

----------Column_A Column_B Column_C Column_D

------------Product1---ValueB1---ValueC1-------ValueD1

------------Product2---ValueB2---ValueC2-------ValueD2

------------总计-------------------------------- --------值T

D 列= Column_C * Column_B 和 ValueT = ValueD1 + ValueD2

当我更新 ValueC1 或 ValueB1 时,ValueD1 会更新并使用新值重新呈现。问题是 ValueT 已更新但不会重新呈现。

我的密码是这个:

cellClose:function(e){
var dataItem=e.sender.dataItem($(e.container).parent())// getting the current edited row
var aux= e.sender.dataSource.data(); //getting all rows
var dataTotal= aux[aux.length-1]; //geting total row

valueB=dataItem["Column_B"];
valueC=dataItem["Column_C"];
dataItem.set("Column_D",valueB*ValueC);

  var sum=0;
   for (let i=0;i<aux.length-1;i++)//getting sum of values of Column_D
   {
           sum=sum+aux[i].Column_D;
   } 
  dataTotal.set("Column_D",sum) // setting sum


} 
  1. https://demos.telerik.com/kendo-ui/grid/aggregates 一样使用 built-in 聚合,它们正是针对这种情况。编程就是为工作选择合适的工具。

  2. 你的循环应该只迭代到 aux.length-2,否则你会将旧的总和加到新的总和上。使用 built-in 聚合可以避免这个错误。

  3. 调用var aux= e.sender.dataSource.data()returns你an array用网格的数据,但网格没有绑定到那个数组。它绑定到数据源。您可以通过执行 e.sender.dataSource.data() 将其绑定到修改后的数组,或者不执行所有这些工作,而是使用 built-in 聚合。