2013-09-05 3 views
2

Есть ли способ создать агрегатную функцию в кендо?Kendo ui grid create aggregate function

Я пытаюсь сделать сумму в сетке, если я использую функцию sum, определенную kendo, она просто конкатенирует числа, подобные строкам. Моим фактическим решением является изменение js из kendo и добавление функции mysum.

Это работает как шарм, но, думаю, должно быть лучшее решение.

Посмотреть код:

var dataSource = new kendo.data.DataSource({ 
        pageSize: 20, 
        data: products, 
        autoSync: true, 
        schema: { 
         model: { 
         id: "ProductID", 
         fields: { 
          ProductID: { editable: false, nullable: true }, 
          ProductName: { validation: { required: true } }, 
          Category: { defaultValue: { CategoryID: 1,CategoryName:"Beverages"} }, 
          UnitPrice: { type: "number", validation: { required: true,min: 1} } 
         } 
         } 
        }, 
        aggregate: [ { field: "ProductName", aggregate: "count" }, 
           { field: "UnitPrice", aggregate: "mysum" }] 
       }); 

$("#grid").kendoGrid({ 
    dataSource: dataSource, 
    pageable: true, 
    height: 430, 
    toolbar: ["create"], 
    columns: [ 
     { field: "ProductName", title: "Product Name", footerTemplate: "Total Count: #=count#" }, 
     { field: "Category", title: "Category", width: "160px", editor: categoryDropDownEditor, template: "#=Category.CategoryName#" }, 
     { field: "UnitPrice", title:"Unit Price", width: "120px", footerTemplate: "Total Sum: #=mysum#" }, 
     { command: "destroy", title: " ", width: "90px" }], 
    editable: true 
}); 

И кендо UI добавлена ​​функция:

mysum:function(e,t,n){return (e || 0) + parseFloat(n.get(t))} 
+1

Пожалуйста, поделитесь код для просмотра и сценария. – Paritosh

+0

Для библиотеки Kendo я создаю функцию: mysum: function (e, t, n) {return (e || 0) + parseFloat (n.get (t))} – dan8912

+0

И для вызова в моем файле вида: var dataSource = new kendo.data.DataSource ({ ..., ...]: 0: }); – dan8912

ответ

0

Здравствуйте, я опоздал, но, если это может помочь кому-то.

Однажды я столкнулся с одной проблемой, и я реализовал решение, которое поможет вам использовать пользовательскую функцию агрегации в groupFooterTemplate.

Ссылка на проект here

function myAggregate(data){ 
 
// Data here is a list of data by group (brilliant right! :-)) 
 
// Do anything here and return result string 
 
} 
 

 
var grid = $('#grid').kendoGrid({ 
 
    ... 
 
    columns: [ 
 
    { field: '', title: '', groupFooterTemplate: myAggregate 
 
    ] 
 
    ... 
 
});
<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
    <!-- YOUR CSS HERE --> 
 
    </head> 
 
    <body> 
 
    ... 
 
    <div id="#grid"></div> 
 
    ... 
 
    <script>// jQuery here </script> 
 
    <script>// kendo.all.min.js here </script> 
 
    <script src="kendo.aggregate.helper.js"></script> 
 
    </body> 
 
</html>

+1

Обратите внимание, что [ссылки только ответы] (http://meta.stackoverflow.com/tags/link-only-answers/info) не рекомендуется, SO-ответы должны быть конечной точкой поиска решения (против еще одной остановки ссылок, которые со временем становятся устаревшими). Пожалуйста, подумайте о добавлении отдельного резюме здесь, сохранив ссылку в качестве ссылки. – kleopatra