dhtmlxgrid_excell_math.js required
The user can attach the necessary math formula to a column while defining its type with setColTypes() method. [=…] should be used to set formula to the necessary column. At the same time, the user still uses any of available eXcells to format the result:
grid.setColTypes("ed,ed,ed,ed,ed[=c2*c3]");
In the example above, c2*c3 means that the value of the last column should be equal to the product of column 2 value and column 3 value. Column indexes are zero-based. The user may apply any JavaScript math operators as long as he refers to correct columns (existing columns with numeric values).
To set a formula for a single cell, the user can define it directly in XML as a cell value, starting expression with ”=”. Column type should still be defined with Math formula (see above), or as type “math”.
<row> ... <cell>=c2*c3</cell> </row>
Together with Math formulas, the user may need to use the following grid method to round resulting values:
grid.setMathRound(decimal_places); // decimal_places - number of digits after the point
By default, all cells with formulas are read-only, thus, the user can't change the formula on the fly. But he still can enable formula editing using the following method:
grid.enableMathEditing(state);
The parameter state can be either false (by default) meaning that all formula cells are read-only, or to true - all formula cells are made editable.
Starting from v1.5, it became quite easy to add automatically calculated values to grid footer or header. Here is the list of available types:
To activate this functionality, the user should include dhtmlxgrid_filter.js into the page and use names listed above with prefix (#) as header/footer cell content. Any HTML can also be added to it, like:
<b>Total:</b> {#stat_total}
Note: Only one type of an auto-calculated value can be used in a single cell.
If automatically calculated values were added after grid's initialization, the user can force recalculation using the following command:
<script> grid.callEvent("onGridReconstructed",[]); </script>