我在ajax模式下使用Kendo UI网格,并且有一个ClientFooterTemplate,其总和为列的总和。这一切都运行良好,但如果我创建/更新或删除记录,ClientFooterTemplate不会更新,并且总和值保持不变。
如何更新ClientFooterTemplate,以便在创建/更新或删除后总和值是最新的?
这是我到目前为止所尝试的:
.Events(events =>
{
events.SaveChanges("SaveChanges");
events.Remove("Remove");
events.Save("SaveChanges");
})
<script>
function SaveChanges(e) {
Reload(e.sender);
}
function Remove(e) {
Reload(e.sender);
}
function Reload(obj) {
obj.dataSource.read();
}
</script>
obj.dataSource.read()在实际更新请求之前执行。
答案 0 :(得分:1)
你需要更新数据源并再次获取,如果你使用聚合总和在你的网格页脚之后javascript将在你每次创建/更新任何行时更新你的页脚总和。
.DataSource(dataSource => dataSource
.Ajax()
.Aggregates(aggregates =>
{
aggregates.Add(p => p.WorkOrderDetailsQuantity).Sum();
aggregates.Add(p => p.Total).Sum();
})
.Events(E =&GT; e.Edit( “onEdit”)保存( “的onSave”))
function onSave(e)
{
//update the aggregate columns
var dataSource = this.dataSource;
e.model.one("change", function () {
dataSource.one("change", function () {
dataSource.aggregates().Total.sum;
});
dataSource.fetch();
});
}
Reagrds
答案 1 :(得分:0)
您可能需要对网格的数据源进行刷新。 所以在更新之后你可以像这样刷新它......
var grid = $("#ProposalGrid").data("kendoGrid");
grid.dataSource.page(1) // or
grid.dataSource.read() //if dataSource Read expects a paramater
grid.dataSource.read( {paramNameAsDefinedInController : value });
答案 2 :(得分:0)
如果您不想重新加载数据,可以随时执行此类操作(有点hacky ......):
首先,对Save事件与SaveChanges事件使用不同的函数,例如:
.Events(events => {
events.Save("Save");
events.SaveChanges("SaveChanges");
events.Remove("Remove")
})
其次,定义JavaScript方法,例如:
function Save(e) {
if (e.value.Gewgaw) { // replace 'Gewgaw' with your column name
var footer = $('tr.k-footer-template'),
idx = 3, // replace 3 with the column index you want to aggregate
aggregate = $(footer).children('td')[idx];
// I had to delay the stuff in this function to get it to load properly
setTimeout(function () {
var sum = 0;
$('tr[role=row][data-uid]').each(function(i, e) {
var $cell = $($(e).children()[idx]);
/* do any necessary manipulations before this
if your cell is formatted */
var cellAmount = parseFloat($cell.text());
sum += cellAmount;
});
/* do any necessary formatting to sum before this
if your cell is formatted */
$(aggregate).text(sum);
}, 50);
}
}
如果您执行该操作并删除/添加适当的格式,则每次编辑相应的单元格时都应更新聚合。