C# 编辑时刷新Kendo UI MVC网格的ClientFooter模板
我在ajax模式下使用KendoUI网格,并且有一个ClientFooterTemplate,其中包含一列的总和。这一切都很好,但如果我创建/更新或删除记录,ClientFooterTemplate不会更新,总和值保持不变 如何更新ClientFooterTemplate,以便在创建/更新或删除后总和值是最新的 这就是我迄今为止所尝试的:C# 编辑时刷新Kendo UI MVC网格的ClientFooter模板,c#,asp.net,kendo-ui,kendo-grid,kendo-asp.net-mvc,C#,Asp.net,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我在ajax模式下使用KendoUI网格,并且有一个ClientFooterTemplate,其中包含一列的总和。这一切都很好,但如果我创建/更新或删除记录,ClientFooterTemplate不会更新,总和值保持不变 如何更新ClientFooterTemplate,以便在创建/更新或删除后总和值是最新的 这就是我迄今为止所尝试的: .Events(events => { events.SaveChanges("SaveChanges"); events.Remove
.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>
.Events(Events=>
{
事件。保存更改(“保存更改”);
事件。移除(“移除”);
事件。保存(“保存更改”);
})
功能保存更改(e){
重新加载(如发送器);
}
功能删除(e){
重新加载(如发送器);
}
功能重新加载(obj){
obj.dataSource.read();
}
obj.dataSource.read()在实际请求更新之前执行。您可能需要刷新网格的数据源。 所以在更新之后你可以像这样刷新它
var grid = $("#ProposalGrid").data("kendoGrid");
grid.dataSource.page(1) // or
grid.dataSource.read() //if dataSource Read expects a paramater
grid.dataSource.read( {paramNameAsDefinedInController : value });
您需要更新
数据源
并再次获取,如果您在网格页脚中使用聚合总和,则以下JavaScript将在每次创建/更新任何行时更新页脚总和
.DataSource(dataSource => dataSource
.Ajax()
.Aggregates(aggregates =>
{
aggregates.Add(p => p.WorkOrderDetailsQuantity).Sum();
aggregates.Add(p => p.Total).Sum();
})
.Events(e=>e.Edit("onEdit").Save("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();
});
}
如果您不想重新加载数据,您可以随时执行以下操作(有点黑客行为…): 首先,对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);
}
}
如果您这样做并删除/添加适当的格式,则每次编辑相应单元格时,它都会更新聚合。我确实尝试过这样做,但保存事件是在实际请求保存之前执行的。这就是我尝试的:.Events(Events=>{Events.SaveChanges(“SaveChanges”);Events.Remove(“Remove”);Events.Save(“SaveChanges”);})函数SaveChanges(e){Reload(e.sender);}函数Remove(e){Reload(e.sender);}函数Reload(obj){obj.dataSource.read();}它首先执行read()然后是实际的保存请求。Idk保存和保存更改之间的差异,但这两个事件可能相互冲突。尝试删除尽可能多的变量。因此,与其在SaveChanges之后调用Reload,不如执行读取。也许尝试一个不同的活动结束或改变可能