Javascript 剑道网格中的值之和

Javascript 剑道网格中的值之和,javascript,jquery,asp.net-mvc,kendo-ui,kendo-grid,Javascript,Jquery,Asp.net Mvc,Kendo Ui,Kendo Grid,我想把剑道网格中的值求和,形成它的总和 为此,我使用了剑道格网 @(Html.Kendo().Grid<Invoice.Models.ViewModels.SupplementViewModel>() .Name("Supplement") .TableHtmlAttributes(new { style = "height:20px; " })

我想把剑道网格中的值求和,形成它的总和

为此,我使用了剑道格网

 @(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")
                            )
                )
@(Html.Kendo().Grid())
.名称(“补编”)
.TableHtmlAttributes(新的{style=“height:20px;”})
.列(列=>
{
columns.Bound(p=>p.SupplementID).Hidden(true);
列绑定(p=>p.Description).Title(“Description”).Width(15);
columns.Bound(p=>p.Nett).Title(“Nett”).Width(15).HtmlAttributes(新的{@class=“Currency”});
columns.Bound(p=>p.Tax).Title(“Tax”).Width(15).HtmlAttributes(new{@class=“Currency”});
columns.Bound(p=>p.GST\u-VAT).Title(“GST\u-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(新的{@class=“Currency”});
columns.Bound(p=>p.Total).Title(“Total”).Width(15).HtmlAttributes(new{@class=“Currency”});
})
.Editable(Editable=>Editable.Mode(GridEditMode.InCell))
.Navigatable()
.Sortable()
.可滚动(scr=>scr.高度(200))
.Scrollable()
.DataSource(DataSource=>DataSource
.Ajax()
.Batch(真)
.ServerOperation(错误)
.Events(Events=>Events.Error(“错误处理程序”))
.Model(Model=>{
Id(p=>p.ProductTypeCode);
})
.Create(“编辑”“创建”“网格”)
.Update(“编辑更新”、“网格”)
.Destroy(“编辑、销毁”、“网格”)
)
)
场景是这样的::

我想显示“Total”中的值之和取决于它们的变化,
怎样才能做到呢?请在这方面帮助我。

您可以使用本演示中所示的聚合:

有两种聚合—一种在分组期间应用,另一种应用于整个网格。以下是如何定义后者:

 .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();
        })

我想您需要每行的总和。您可以在控制器中执行此操作

Total = Nett + Tax + GST_VAT...
或者在视图模型中

public int Total
{
    get
    {
        return this.Nett + this.Tax;
    }
}

如果您想要每个列的总和,请使用Atanas Korchev所描述的聚合。最后,我在我的场景中使用了一些东西,并使用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;

    });

如果有人有任何新的解决方案,请提出建议,我将尝试在我的应用程序中实现它。

在我看来,考虑到客户端对总体更新的要求,您的解决方案是可行的

我建议您不要直接获取或更新单元格数据(例如。
var-tax=parseFloat(row.find('input')[3]。值
))

而是使用网格客户端API获取值。即:

var grid = $("#grid").data("kendoGrid");
var row = $(this).closest("tr");
var data = grid.dataItem(row);
tax = data.tax;

请参阅dataItem的文档。

使用剑道网格聚合..但聚合用于特定列的聚合,在我的场景中,我需要所有列的总和。我猜您需要行的总和(而不是列)。因此
Sum=Total=Sum(净额、税收、GST\U增值税…)
。如果是这种情况,您可以从控制器进行求和。是的,我知道此示例,但我的场景与此不同,请在我的场景中建议我在上述代码中应该做什么?