更新多行 - 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
}
像 https://demos.telerik.com/kendo-ui/grid/aggregates 一样使用 built-in 聚合,它们正是针对这种情况。编程就是为工作选择合适的工具。
你的循环应该只迭代到 aux.length-2
,否则你会将旧的总和加到新的总和上。使用 built-in 聚合可以避免这个错误。
调用var aux= e.sender.dataSource.data()
returns你an array用网格的数据,但网格没有绑定到那个数组。它绑定到数据源。您可以通过执行 e.sender.dataSource.data()
将其绑定到修改后的数组,或者不执行所有这些工作,而是使用 built-in 聚合。
我正在使用 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
}
像 https://demos.telerik.com/kendo-ui/grid/aggregates 一样使用 built-in 聚合,它们正是针对这种情况。编程就是为工作选择合适的工具。
你的循环应该只迭代到
aux.length-2
,否则你会将旧的总和加到新的总和上。使用 built-in 聚合可以避免这个错误。调用
var aux= e.sender.dataSource.data()
returns你an array用网格的数据,但网格没有绑定到那个数组。它绑定到数据源。您可以通过执行e.sender.dataSource.data()
将其绑定到修改后的数组,或者不执行所有这些工作,而是使用 built-in 聚合。