Demo - Export to XLSX

HTML

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.grapecity.com/wijmo/5.latest/styles/wijmo.min.css">
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.grid.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.input.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.grid.filter.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/2.5.0/jszip.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.xlsx.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.grid.xlsx.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">

  
  <div id="theGrid"></div>
<pre>
Hi Team , I have an issue with wijmo column dataMap:

Business case :
--------------
1- Wijmo grid has 2 rows , each row is related to a certain stock item 
        exp: (Stock Item Id : 1 , 2)
2- Each stock item has related Unit of Measures
      exp: ([StockItemId 1 >> UOMId 1 , 2 & UOMName : UOM_1 , UOM_2 ] , [>> UOMId 3 , 4 & UOMName : UOM_3 , UOM_4 ])
       
3- Unit of Measure names duplication is allowed with different stock items

4- The goal from  this sample is to change price based on selected Unit of Measure

Problem :
---------
In case that Unit of Measures names are unique everything going good , once i change
the data source to be like :
var ddlDataSource = '[{"UOMId": 1,"UOMName": "UOM_1","UOMPrice": 111,"StockItemId": 1}, 	{"UOMId": 2,"UOMName": "UOM_2","UOMPrice": 222,"StockItemId": 1}, {"UOMId": 3,"UOMName": "UOM_1","UOMPrice": 333,"StockItemId": 2}, {"UOMId": 4,"UOMName": "UOM_2","UOMPrice": 444,"StockItemId": 2}]';
prices not changed based on  selected Unit of Measure...

CSS

.wj-flexgrid {
  max-height: 250px;
  margin: 12px 0;
}
body {
  margin-bottom: 20px;
}

JavaScript

// create some random data
var wijmoGridObject = null;
var ddlDataSource = '[{"UOMId": 1,"UOMName": "UOM_1","UOMPrice": 111,"StockItemId": 1}, 	{"UOMId": 2,"UOMName": "UOM_2","UOMPrice": 222,"StockItemId": 1}, {"UOMId": 3,"UOMName": "UOM_3","UOMPrice": 333,"StockItemId": 2}, {"UOMId": 4,"UOMName": "UOM_4","UOMPrice": 444,"StockItemId": 2}]';
onload = function() {

  // create some random data
 
  var countries = 'US,Germany,UK,Japan,Italy,Greece'.split(',');
  var data = [];
  for (var i = 1; i < 3; i++) {
    data.push({
      id: i,
      country: countries[i % countries.length],
      PRICE: i == 1 ? 111 : 333,
      StockItemId: i,
      UOM: i==1 ? i : 3 
    });
  }

  // show the data in a grid
  wijmoGridObject = new wijmo.grid.FlexGrid('#theGrid', {
    autoGenerateColumns: true,
    itemsSource: data
  });

  refillUOMDDL(wijmoGridObject, getUOMsDataSources(ddlDataSource))
 
  wijmoGridObject.cellEditEnded.addHandler(function(s, e)
  {
    DoWijmoOnCellEditEnded(e.row, e.col, wijmoGridObject, e);
  });
}
function DoWijmoOnCellEditEnded(selectedRow, selectedColumn, wijmoGridObject, e)
{
 var uomColIndex = getColumnIndex(wijmoGridObject, 'UOM');
	if (selectedColumn == uomColIndex) {
                let uomId = wijmoGridObject.collectionView.currentItem.UOM;
                let stockItemId = wijmoGridObject.collectionView.currentItem.StockItemId;
                if (uomId != null && stockItemId != null) {
                    let uomsArray = getUOMsDataSources(ddlDataSource);
                    for (var i = 0; i < uomsArray.length; i++) {
                        var uomObj = uomsArray[i];
                        if (uomObj.UOMId == uomId && uomObj.StockItemId == stockItemId) 
                            if (uomObj.UOMPrice != null)
                                wijmoGridObject.setCellData(selectedRow, "PRICE", uomObj.UOMPrice, true, true);
                        
                    }
                }
            }
}
function...