更新多行-Kendo JQuery网格

问题描述

我正在使用cellClose事件更新单元格值,它在所选行的值内工作。我最后一行称为Total,它是D列的值之和

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

----------产品1 --- ValueB1 --- ValueC1 ------- ValueD1

----------产品2 --- ValueB2 --- ValueC2 ------- ValueD2

----------总计------------------------------------ ------ ValueT

列D =列C *列B和值T =值D1 +值D2

当我更新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那样使用内置的聚合,它们恰好适合这种情况。编程就是为工作选择合适的工具。

  2. 您的循环应仅迭代到aux.length-2,否则,您要将旧的总和添加到新的总和中。您可以通过使用内置的聚合来避免这种错误。

  3. 调用var aux= e.sender.dataSource.data()返回an array,其中包含网格的数据,但是网格未绑定到该数组。它绑定到数据源。您可以通过执行e.sender.dataSource.data()将其绑定到修改后的数组,也可以使用内置的聚合而不是完成所有这些工作。