Angular DataGrid - summary.totalItems
Specifies items of the total summary.
The total summary, which is located in the grid footer, provides a synopsis of all data contained in the grid. It contains several summary items. Each item displays a value that is a product of applying an aggregate function to the data of a specific column.
To specify the items of the total summary, declare an array of objects, each of which contains at least two fields: column and summaryType. The column field specifies the identifier of the column that provides data for an aggregate function. The summaryType specifies the aggregate function to be applied. The following code snippet shows how to declare two summary items.
jQuery
$(function () { $("#dataGridContainer").dxDataGrid({ // ... summary: { totalItems: [{ column: "Age", summaryType: "avg" }, { column: "LastName", summaryType: "count" }] } }); });
Angular
<dx-data-grid ... > <dxo-summary> <dxi-total-item column="Age" summaryType="avg"> </dxi-total-item> <dxi-total-item column="LastName" summaryType="count"> </dxi-total-item> </dxo-summary> </dx-data-grid>
import { DxDataGridModule } from "devextreme-angular"; // ... export class AppComponent { // ... } @NgModule({ imports: [ // ... DxDataGridModule ], // ... })
Vue
<template> <DxDataGrid ... > <DxSummary> <DxTotalItem column="Age" summary-type="avg" /> <DxTotalItem column="LastName" summary-type="count" /> </DxSummary> </DxDataGrid> </template> <script> import 'devextreme/dist/css/dx.light.css'; import DxDataGrid, { DxSummary, DxTotalItem } from 'devextreme-vue/data-grid'; export default { components: { DxDataGrid, DxSummary, DxTotalItem }, // ... } </script>
React
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import DataGrid, { Summary, TotalItem } from 'devextreme-react/data-grid'; export default function App() { return ( <DataGrid ... > <Summary> <TotalItem column="Age" summaryType="avg" /> <TotalItem column="LastName" summaryType="count" /> </Summary> </DataGrid> ); }
By default, a summary item is placed in the column that provides data for it. If you need to place it in another column, assign the identifier of this column to the showInColumn property.
See Also
alignment
Specifies the alignment of a summary item.
The default alignment of a summary item depends on the type of data that is held by the column that displays this item. The following table illustrates the dependency between the default alignment and the column data type.
dataType | alignment |
---|---|
'number' | 'right' |
'boolean' | 'center' |
'string' | 'left' |
'date' | 'left' |
'datetime' | 'left' |
'guid' | 'left' |
See Also
column
Specifies the column that provides data for a summary item.
To provide data for a summary item, assign the name, data field or caption of a column to this property. The summary item will be displayed in the corresponding column. If you require to place the summary item in another column, set the showInColumn property for this item.
See Also
cssClass
Specifies a CSS class to be applied to a summary item.
You can change the appearance of summary items using CSS styles. To apply a style to a summary item, implement a CSS class, which may contain various properties, and assign the name of this class to the cssClass property of the summary item.
customizeText
Customizes the text to be displayed in the summary item.
The text for the summary item to display.
This property accepts a function that must return the text to be displayed in the summary item. When you implement this function, you can access the summary item value using the fields of object passed to the function as its argument.
See Also
displayFormat
Specifies the summary item's text.
You can use the following position markers in this text:
- {0} - formatted summary value.
- {1} - the parent column's caption. Available if the showInColumn property is specified.
jQuery
$(function () { $("#dataGridContainer").dxDataGrid({ // ... summary: { totalItems: [{ column: "SaleAmount", summaryType: "sum", showInColumn: "TotalAmount", valueFormat: "currency", displayFormat: "Column: {1}. Sales: {0}" // for example, "Column: Total Amount. Sales: $1234" }, // ... ] } }); });
Angular
<dx-data-grid ... > <dxo-summary> <dxi-total-item column="SaleAmount" summaryType="sum" showInColumn="TotalAmount" valueFormat="currency" displayFormat="Column: {1}. Sales: {0}"> <!-- for example, "Column: Total Amount. Sales: $1234" --> </dxi-total-item> </dxo-summary> </dx-data-grid>
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; import { DxDataGridModule } from 'devextreme-angular'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, DxDataGridModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
Vue
<template> <DxDataGrid ... > <DxSummary> <DxTotalItem column="SaleAmount" summary-type="sum" show-in-column="TotalAmount" value-format="currency" display-format="Column: {1}. Sales: {0}" /> <!-- for example, "Column: Total Amount. Sales: $1234" --> </DxSummary> </DxDataGrid> </template> <script> import 'devextreme/dist/css/dx.light.css'; import { DxDataGrid, DxSummary, DxTotalItem } from 'devextreme-vue/data-grid'; export default { components: { DxDataGrid, DxSummary, DxTotalItem } } </script>
React
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import { DataGrid, Summary, TotalItem } from 'devextreme-react/data-grid'; class App extends React.Component { render() { return ( <DataGrid> <Summary <TotalItem column="SaleAmount" summaryType="sum" showInColumn="TotalAmount" valueFormat="currency" displayFormat="Column: {1}. Sales: {0}" /> <!-- for example, "Column: Total Amount. Sales: $1234" --> </Summary> </DataGrid> ); } } export default App;
Use the customizeText property for more advanced text customizations.
name
Specifies the total summary item's identifier.
Use this name to access the summary item in callback functions like calculateCustomSummary.
showInColumn
Specifies the column that must hold the summary item.
By default, a summary item is placed in the column that provides data for it. If you require to place it in another column, assign the name, data field or caption of this column to the showInColumn property.
See Also
skipEmptyValues
Specifies whether to skip empty strings, null, and undefined values when calculating a summary. Does not apply when you use a remote data source.
Specified in a summary configuration object, this property affects an individual summary item. If you need to apply a single setting to all summaries in a grid, specify the skipEmptyValues property in the summary object.
jQuery
$(function () { $("#dataGridContainer").dxDataGrid({ // ... summary: { // ... skipEmptyValues: false } }); });
Angular
<dx-data-grid ... > <dxo-summary [skipEmptyValues]="false"></dxo-summary> </dx-data-grid>
import { DxDataGridModule } from "devextreme-angular"; // ... export class AppComponent { // ... } @NgModule({ imports: [ // ... DxDataGridModule ], // ... })
Vue
<template> <DxDataGrid ... > <DxSummary :skip-empty-values="true"> <!-- ... --> </DxSummary> </DxDataGrid> </template> <script> import 'devextreme/dist/css/dx.light.css'; import DxDataGrid, { DxSummary } from 'devextreme-vue/data-grid'; export default { components: { DxDataGrid, DxSummary }, // ... } </script>
React
import React from 'react'; import 'devextreme/dist/css/dx.light.css'; import DataGrid, { Summary } from 'devextreme-react/data-grid'; export default function App() { return ( <DataGrid ... > <Summary skipEmptyValues={true}> {/* ... */} </Summary> </DataGrid> ); }
summaryType
Specifies how to aggregate data for the total summary item.
The following summary types are supported:
"sum"
"min"
"max"
"avg"
"count"
"custom"
Applies a custom client-side aggregate function (calculateCustomSummary). Refer to Client-Side Data Aggregation for more information.Any other type
Applies a custom server-side aggregate function. Refer to Server-Side Data Aggregation for more information.
See Also
valueFormat
Specifies a summary item value's display format.
See the format section for information on accepted values.
See Also
If you have technical questions, please create a support ticket in the DevExpress Support Center.