1

I have a simple datagrid in Devextreme.

My grid is groupable and my code like as below:

<dx-data-grid [dataSource]="dataSource"
              [columnAutoWidth]="true"
              keyExpr="taskTicketActionId"
              showBorders="true"
              height="auto"
              [scrolling]="{useNative:true}"
              [allowColumnReordering]="true"
              noDataText="{{l('NoData')}}"
              (onRowClick)="onRowClick($event)"
              (onToolbarPreparing)="onToolbarPreparing($event)"
              [rowAlternationEnabled]="true">
    <dxo-state-storing [enabled]="true" type="localStorage" storageKey="devextremeAnalyzingPlanFactDataGridStorage"></dxo-state-storing>

    <dxo-column-chooser [enabled]="true"
                        [title]="l('HiddenColumns')"
                        [emptyPanelText]="l('DragColumnHere')">
    </dxo-column-chooser>

    <dxo-group-panel [visible]="true"
                     [emptyPanelText]="l('DragColumnHereForGrouping')">
    </dxo-group-panel>

    <dxo-grouping [autoExpandAll]="false"
                  [allowCollapsing]="true"
                  expandMode="buttonClick">
    </dxo-grouping>
    <dxo-summary [calculateCustomSummary]="calculateMySummary">
        <dxi-group-item column="target"
                        summaryType="sum"
                        name="myTarget"
                        [valueFormat]="{type:'fixedPoint',precision:2}"
                        displayFormat="{0}"
                        [showInGroupFooter]="true">
        </dxi-group-item>
        <dxi-group-item column="result"
                        name="myResult"
                        summaryType="sum"
                        [valueFormat]="{type:'fixedPoint',precision:2}"
                        displayFormat="{0}"
                        [showInGroupFooter]="true">
        </dxi-group-item>
        <dxi-group-item column="percent"
                        summaryType="custom"
                        name="myPercent"
                        [valueFormat]="{type:'fixedPoint',precision:2}"
                        displayFormat="{0}"
                        [alignByColumn]="true"
                        [showInGroupFooter]="true">
        </dxi-group-item>
    </dxo-summary>

    <dxi-sort-by-group-summary-info summaryItem="count"></dxi-sort-by-group-summary-info>

    <dxo-pager [showPageSizeSelector]="true"
               [allowedPageSizes]="devExtremeDatatableHelper.predefinedRecordsCountPerPage"
               [showInfo]="true"
               [visible]="true"
               infoText="{2} {{l('Plan')}}">
    </dxo-pager>

    <dxi-column dataField="itemGroup"
                caption="{{l('ItemGroup')}}"
                [allowSorting]="true">
    </dxi-column>
    <dxi-column [allowGrouping]="true" dataField="lineNr"
                caption="{{l('LineNr')}}">
    </dxi-column>
    <dxi-column dataField="firmName"
                [visible]="false"
                caption="{{l('Firm')}}">
    </dxi-column>

    <dxi-column dataField="groupSpecialCode"
                [visible]="false"
                caption="{{l('GroupSpecialCode1')}}">
    </dxi-column>
    <dxi-column dataField="groupSpecialCode2"
                [visible]="false"
                caption="{{l('GroupSpecialCode2')}}">
    </dxi-column>
    <dxi-column dataField="groupSpecialCode3"
                [visible]="false"
                caption="{{l('GroupSpecialCode3')}}">
    </dxi-column>

    <dxi-column dataField="username"
                caption="{{l('Salesman')}}">
    </dxi-column>
    <dxi-column dataField="salesPersonHeadName"
                caption="{{l('SalesPersonHead')}}">
    </dxi-column>
    <dxi-column dataField="saleManagerName"
                caption="{{l('SaleManager')}}">
    </dxi-column>

    <dxi-column [allowGrouping]="false" dataField="target"
                [format]="{type:'fixedPoint',precision:2}"
                caption="{{l('Target')}}">
    </dxi-column>
    <dxi-column [allowGrouping]="false" dataField="result"
                [format]="{type:'fixedPoint',precision:2}"
                caption="{{l('Result')}}">
    </dxi-column>
    <dxi-column [allowGrouping]="false" dataField="percent"
                [format]="{type:'fixedPoint',precision:2}" alignment="right"
                caption="{{l('AmountPercentDecember')}}">
    </dxi-column>

</dx-data-grid>

My custom summary function like as below:

calculateMySummary(options) {
    if (options.name == 'myPercent') {

       let totalResult = options.component.getTotalSummaryValue('myResult'); // always returns undefined

       let totalTarget = options.component.getTotalSummaryValue('myTarget'); // always returns undefined

       options.totalValue = (totalResult / totalTarget) * 100;
    }
}

I want percent be Percent = (Result / Target ) * 100, but I can't know how I can achieve this. Because getTotalSummmaryValue function only work for dxi-total-item, but my component is dxi-group-item and getTotalSummmaryValue always returns undefined for dxi-group-item.

What is the getTotalSummmaryValue alternative for dxi-group-item ? Thanks

enter image description here

Ramil Aliyev 007
  • 4,437
  • 2
  • 31
  • 47

0 Answers0