Как использовать агрегатные значения сетки кендо в шаблоне столбца - PullRequest
0 голосов
/ 05 июля 2018

Я использую сетку кендо. Я хочу показать совокупные значения столбцов в первом ряду сетки вместо нижнего колонтитула. Для этого я вставляю строку в качестве первой строки и определяю шаблон столбца для отображения совокупных значений столбца. Но это не работает. Если я использую статистические значения в шаблоне нижнего колонтитула, он работает.

Пример кода:

 <div id="grid"></div>
<script>
$("#grid").kendoGrid({
  columns: [ {
    field: "product",
    template: "<strong>#: product # </strong>"    
  },
           {
    field: "price",
    template: "<strong>#: price # </strong>",
    footerTemplate: "<strong>#: sum # </strong>"
  }],
  dataSource: {
    aggregate:[
      {field:"price", aggregate:"sum"}
    ],
    data:[ { product: "product1",price:30 }, { product: "product2", price:40 } ]}
});
</script>

Если я использую значение 'sum' в шаблоне 'price', этот образец завершится неудачей.

{
    field: "price",
    template: "<strong>#: sum# </strong>"
  }

Как решить эту проблему? Мой подход правильный?

1 Ответ

0 голосов
/ 05 июля 2018

Включите все агрегат и значение поля в Свойство dataSource KendoGrid. Вы можете попробовать следующую строку кода: -

 <div id="example">
            <div id="grid"></div>
            <script>
                $(document).ready(function() {
                    $("#grid").kendoGrid({
                        dataSource: {
                            type: "odata",
                            transport: {
                                read: "https://demos.telerik.com/kendo-ui/service/Northwind.svc/Products"
                            },
                            schema:{
                                model: {
                                    fields: {
                                        UnitsInStock: { type: "number" },
                                        ProductName: { type: "string" },
                                        UnitPrice: { type: "number" },
                                        UnitsOnOrder: { type: "number" },
                                        UnitsInStock: { type: "number" }
                                    }
                                }
                            },
                            pageSize: 7,
                            group: {
                                     field: "UnitsInStock", aggregates: [
                                        { field: "ProductName", aggregate: "count" },
                                        { field: "UnitPrice", aggregate: "sum"},
                                        { field: "UnitsOnOrder", aggregate: "average" },
                                        { field: "UnitsInStock", aggregate: "count" }
                                     ]
                                   },

                            aggregate: [ { field: "ProductName", aggregate: "count" },
                                          { field: "UnitPrice", aggregate: "sum" },
                                          { field: "UnitsOnOrder", aggregate: "average" },
                                          { field: "UnitsInStock", aggregate: "min" },
                                          { field: "UnitsInStock", aggregate: "max" }]
                        },
                        sortable: true,
                        scrollable: false,
                        pageable: true,
                        columns: [
                            { field: "ProductName", title: "Product Name", aggregates: ["count"], footerTemplate: "Total Count: #=count#", groupFooterTemplate: "Count: #=count#" },
                            { field: "UnitPrice", title: "Unit Price", aggregates: ["sum"] },
                            { field: "UnitsOnOrder", title: "Units On Order", aggregates: ["average"], footerTemplate: "Average: #=average#",
                                groupFooterTemplate: "Average: #=average#" },
                            { field: "UnitsInStock", title: "Units In Stock", aggregates: ["min", "max", "count"], footerTemplate: "<div>Min: #= min #</div><div>Max: #= max #</div>",
                                groupHeaderTemplate: "Units In Stock: #= value # (Count: #= count#)" }
                        ]
                    });
                });
            </script>
        </div>

или мы можем попробовать это тоже, используя тег div

$("#mygrid").kendoGrid({
dataSource: data,
columns:[
{
  field: "Column 1",
  title: "Column 1",
  footerTemplate: "#= <div>Totals A</div><div>Totals B</div> #"
},
{
  field: "Column 2",
  title: "Column 2",
  footerTemplate: "#= <div>$1000</div><div>$700</div> #"
}
]
...