<ejs-grid id="Grid" allowPaging="true" allowResizing="true" enablePersistence="true">
<e-grid-aggregates>
<e-grid-aggregate>
<e-aggregate-columns>
<e-aggregate-column field="debit" type="Sum" format="C2"></e-aggregate-column>
<e-aggregate-column field="credit" type="Sum" format="C2"></e-aggregate-column>
</e-aggregate-columns>
</e-grid-aggregate>
</e-grid-aggregates>
<e-grid-pagesettings pageSizes="true"></e-grid-pagesettings>
<e-grid-columns>
<e-grid-column field="transDate" headerText="TransDate" textAlign="Right" width="50" type="date" format="dd/MM/yyyy"></e-grid-column>
<e-grid-column field="docSeriesCode" headerText="DocSeriesCode" width="60"></e-grid-column>
<e-grid-column field="refCode" headerText="RefCode" width="60" textAlign="Right"></e-grid-column>
<e-grid-column field="companyCode" headerText="CompanyCode" width="60"></e-grid-column>
<e-grid-column field="debit" headerText="Debit" width="50" type="number" textAlign="Right" format="C2"></e-grid-column>
<e-grid-column field="credit" headerText="Credit" width="50" type="number" textAlign="Right" format="C2"></e-grid-column>
<e-grid-column field="runningTotal" headerText="RunningTotal" type="number" width="50" textAlign="Right" format="C2"></e-grid-column>
</e-grid-columns>
</ejs-grid>
I have a combo box with currenies and the user selects a display currency
When the grid shows everything is ok
When I change currency then rows change currency code correctly but aggregate row remains in previous currency code
This is currency change code
const setCurrency = (currencyId, currencyCode,currencyLocale) => {
const $selectedCurrency = $('.selected-currency-text');
$selectedCurrency.data('currencyid', currencyId);
$selectedCurrency.data('currencycode', currencyCode);
$selectedCurrency.data('currencylocale', currencyLocale);
$selectedCurrency.text(currencyCode);
try {
console.log(currencyCode);
console.log(currentCulture);
let cCulture = currencyLocale;
let cBaseCulture=cCulture;
if (cCulture.length>2){
cBaseCulture=cCulture.substr(0,2);
}
loadCultureFiles(cBaseCulture);
loadEj2Translation(cBaseCulture);
ej.base.setCulture(cBaseCulture);
ej.base.setCurrencyCode(currencyCode);
formatterCurrency = new Intl.NumberFormat(cCulture,
{
style: 'currency',
currency: currencyCode,
minimumFractionDigits: 2
});
} catch (e) {
console.log('Problem setting currency formatter');
}
};const loadCultureFiles=(name) =>{
let files = ['ca-gregorian.json', 'numbers.json', 'timeZoneNames.json', 'currencies.json'];
if (name === 'ar') {
files.push('numberingSystems.json');
}
let loader = ej.base.loadCldr;
let loadCulture = function (prop) {
let val
let ajax;
if (name === 'ar' && prop === files.length - 1) {
ajax = new ej.base.Ajax(location.origin + location.pathname + '/../../../lib/cldr-data/supplemental/' + files[prop], 'GET', false);
} else {
ajax = new ej.base.Ajax(location.origin + location.pathname + '/../../../lib/cldr-data/main/' + name + '/' + files[prop], 'GET', false);
}
ajax.onSuccess = function (value) {
val = value;
};
ajax.send();
loader(JSON.parse(val));
};
for (var prop = 0; prop < files.length; prop++) {
loadCulture(prop);
}
};const loadEj2Translation=(name)=>{
let path = `/lib/ej2translations/${name}.json`;
let ajax = new ej.base.Ajax(path, 'GET', false); //load the name json culture file
ajax.send().then((e) => {
var culture = JSON.parse(e);
ej.base.L10n.load(
culture
);
});
};I am attaching two imagesfirst is initial show in eurossecond image is after user changes currency to bulgarian lev
|
Index.cshtml
function onChange(args) {
// debugger;
var grid = document.getElementsByClassName('e-grid')[0].ej2_instances[0];
if (args.value === "en-US") {
grid.locale = "en-US";
}
if (args.value === "Ar") {
setCulture();
grid.locale = "ar";
}
}
function loadCultureFiles(name) {
var files = ['ca-gregorian.json', 'numbers.json', 'currencies.json', 'timeZoneNames.json'];
if (name === 'ar') {
files.push('numberingSystems.json');
}
var loader = ej.base.loadCldr;
var loadCulture = function (prop) {
var val, ajax;
if (name === 'ar' && prop === files.length - 1) {
ajax = new ej.base.Ajax(location.origin + location.pathname + '/../../js/cldr-data/supplemental/' + files[prop], 'GET', false);
}
else {
ajax = new ej.base.Ajax(location.origin + location.pathname + '/../../js/cldr-data/main/' + name + '/' + files[prop], 'GET', false);
}
ajax.onSuccess = function (value) {
val = value;
loader(JSON.parse(val));
};
ajax.send();
};
for (var prop = 0; prop < files.length; prop++) {
loadCulture(prop);
}
} |