2

剣道で集計関数を作成する方法はありますか?

グリッドで合計を作成しようとしています。剣道で定義された合計関数を使用すると、数値が文字列のように連結されます。私の実際の解決策は、jsを剣道から変更し、そこに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))}
4

1 に答える 1

0

こんにちは、遅れましたが、誰かを助けることができれば.

私は一度同じ問題に直面したことがあり、groupFooterTemplate でカスタム集計関数を使用するのに役立つソリューションを実装しました。

プロジェクトへのリンクはこちら

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>

于 2016-01-13T10:12:56.627 に答える