This is a migrated thread and some comments may be shown as answers.

How to Recalculate datasource aggregates as soon as a grid field updated

4 Answers 851 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Cagatay
Top achievements
Rank 1
Cagatay asked on 28 Dec 2011, 05:13 PM
I've following datasource and grid configuritaion :

dsDetail = new kendo.data.DataSource({
    schema: {
        type: "json",
        model: {
            id: "id",
            fields: {
                c_pmprj: { validation: { required: true }},
                c_pmchart: { validation: { required: true }},
                dt: {/*type: "date",*/ validation: { required: true } },
                slip_nro: {validation: { required: true }},
                defi: { type: "string" },
                amn: { type: "number", validation: { required: true, min: 1} },
                vat01: {type: "number"},
                vat08: {type: "number"},
                vat18: {type: "number"},
                c_zadcity: {type: "string"},
                id: {type: "number"}
            }
        }
    },
    aggregate: [{ field: "amn", aggregate: "sum" }],
    change: function (e) {
        //
    }
});    
 
gridDetail = $("#grid_pmexpense").kendoGrid({
    dataSource: dsDetail,
    //height: 250,
    //filterable: true,
    scrollable: false,
    pageable: false,
    //selectable: 'row',
    sortable: true,
    editable: true,
    navigatable: true,
    columns : [ {field: "c_pmprj", title: "Proje", width: "120px", editor: prjEditor},
                {field: "c_pmchart", title: "Masraf", width: "300px", editor: chartEditor},
                {field: "dt", title: "Belge Tar.", width: "120px", editor:dateEditor /*format: "{0:dd.MM.yyyy}"*/},
                {field: "slip_nro", title: "Belge No", width: "120px"},
                {field: "defi", title: "Açıklama", width: "220px", editor: noteEditor},
                {field: "amn", title: "Top.Tutar", width: "120px", template: '<span style="float:right">#= amn #</span>'},
                {field: "vat01", title: "KDV %1", width: "100px", template: '<span style="float:right">#= vat01 #</span>'},
                {field: "vat08", title: "KDV %8", width: "100px", template: '<span style="float:right">#= vat08 #</span>'},
                {field: "vat18", title: "KDV %18", width: "100px", template: '<span style="float:right">#= vat18 #</span>'},
                {
                    field: "id",
                    title: "İşlemler",
                    template: detailGridActionTemplate,
                    width:  "130px"}                       
                ],
 
    change : function(e) {
        //
    },
    save: function (e) {
            $("#amn_tot").data("kendoNumericTextBox").value(this.dataSource.aggregates().amn.sum);
    },
    saveChanges: function(e) {
        //alert('save');
    }
});    

But this code does not update $("#amn_tot") field with new summed value... In fact this.dataSource.aggregates().amn.sum call always return initial summed up value... How do I recalculate aggregate value? Am I missing something ?

Thanks.

4 Answers, 1 is accepted

Sort by
0
Nikolay Rusev
Telerik team
answered on 29 Dec 2011, 01:17 PM
Hello Cagatay,

The aggregates will be refreshed every time fresh data is retrieved from the DataSource. Thus aggregates will be refreshed in change event of the DataSource instead of save event of the Grid.

All the best,
Nikolay Rusev
the Telerik team
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
0
Cagatay
Top achievements
Rank 1
answered on 30 Dec 2011, 09:56 AM
Hi Nikolay,

So this means when user is editing a grid aggregates will not reflect current grand total until a new post or get request?

By the way I've tried dataset's change method and as you've mentioned it does not trigger when user edits a data...

IMHO this feature should be implemented, in a business application users generally need to see updated grand totals as soon as they edit a row... 

Regards...
0
Nikolay Rusev
Telerik team
answered on 03 Jan 2012, 10:24 AM
Hello Cagatay,

Please check the following jsFiddle to see how this can be achieved by editing Amount column.

Regards,
Nikolay Rusev
the Telerik team
Join us on our journey to create the world's most complete HTML 5 UI Framework - download Kendo UI now!
0
Cagatay
Top achievements
Rank 1
answered on 26 Feb 2012, 01:57 PM
Awesome, thanks..
Tags
Grid
Asked by
Cagatay
Top achievements
Rank 1
Answers by
Nikolay Rusev
Telerik team
Cagatay
Top achievements
Rank 1
Share this question
or