我想在我的剑道网格中对值进行求和以形成总计,
为此我使用的是Kendo Grid Like,
@(Html.Kendo().Grid<Invoice.Models.ViewModels.SupplementViewModel>()
.Name("Supplement")
.TableHtmlAttributes(new { style = "height:20px; " })
.Columns(columns =>
{
columns.Bound(p => p.SupplementID).Hidden(true);
columns.Bound(p => p.Description).Title("Description").Width(15);
columns.Bound(p => p.Nett).Title("Nett").Width(15).HtmlAttributes(new { @class="Currency"});
columns.Bound(p => p.Tax).Title("Tax").Width(15).HtmlAttributes(new { @class = "Currency" });
columns.Bound(p => p.GST_VAT).Title("GST_VAT").Width(15).HtmlAttributes(new { @class = "Currency" });
columns.Bound(p => p.ServiceTax).Title("ServiceTax").Width(15).HtmlAttributes(new { @class = "Currency" });
columns.Bound(p => p.ServiceFee).Title("ServiceFee").Width(15).HtmlAttributes(new { @class = "Currency" });
columns.Bound(p => p.Total).Title("Total").Width(15).HtmlAttributes(new { @class = "Currency" });
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Navigatable()
.Sortable()
.Scrollable(scr => scr.Height(200))
.Scrollable()
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
.Events(events => events.Error("error_handler"))
.Model(model =>{
model.Id(p => p.ProductTypeCode);
})
.Create("Editing_Create", "Grid")
.Update("Editing_Update", "Grid")
.Destroy("Editing_Destroy", "Grid")
)
)
情景是这样的::
我想在“总计”中显示值的总和取决于那里的变化, 怎么做到呢?请帮帮我。
答案 0 :(得分:2)
您可以使用此演示中显示的聚合:http://demos.kendoui.com/web/grid/aggregates.html
聚合有两种 - 在分组期间应用的聚合和应用于整个网格的聚合。以下是如何定义后者:
.DataSource(dataSource => dataSource
.Ajax()
.Aggregates(aggregates =>
{
aggregates.Add(p => p.UnitsInStock).Min().Max().Count();
aggregates.Add(p => p.UnitsOnOrder).Average();
aggregates.Add(p => p.ProductName).Count();
aggregates.Add(p => p.UnitPrice).Sum();
})
答案 1 :(得分:1)
我想你需要summation of each row
。您可以在控制器中执行此操作。
Total = Nett + Tax + GST_VAT...
或者在视图模型中
public int Total
{
get
{
return this.Nett + this.Tax;
}
}
如果您想要每列的总和,请使用Atanas Korchev
所述的聚合。
答案 2 :(得分:0)
最后我得到了一些我在我的场景中使用的东西,&amp;它使用javascript ::
手动完成 $("#Supplement").on('change', '.Currency > input[type="text"]', function () {
var row = $(this).closest("tr");
var temp = $(this).val();
var nett = parseFloat(row.find('input')[2].value);
var tax = parseFloat(row.find('input')[3].value);
var gst_vat = parseFloat(row.find('input')[4].value);
var servicetax = parseFloat(row.find('input')[5].value);
var servicefee = parseFloat(row.find('input')[6].value);
var total = nett + tax + gst_vat + servicetax + servicefee;
row.find('.TotalCurrency ')[0].textContent = total;
});
如果有人有任何新的解决方案,请建议,我会尝试在我的申请中实现。
答案 3 :(得分:0)
在我看来,鉴于要求客户端更新Total,您的解决方案是可行的。
我建议您不要直接获取或更新单元格数据(例如
var tax = parseFloat(row.find('input')[3].value
);
而是使用网格客户端API获取值。即:
var grid = $("#grid").data("kendoGrid");
var row = $(this).closest("tr");
var data = grid.dataItem(row);
tax = data.tax;
请参阅dataItem here的文档。