EXTjs 3.4网格中的numbercolumn如何显示印度数字格式?

时间:2018-07-26 05:09:08

标签: extjs

如何格式化EXTJS 3.4网格中的数字列以显示印度数字格式?

例如:45,78,895.45

3 个答案:

答案 0 :(得分:0)

一种实现方法并不理想,但是您可以覆盖Ext.grid.RowNumberer并使用javascript调整rowNumber,使其以印度数字样式返回。为此,我们将使用myNumString.toLocaleString('en-In');方法。我已经为您创建了该功能。这是Example(fiddle)。如果这解决了您的问题,请标记为已回答,以便其他人可以从中受益。如果看起来不正确,请发表评论。请查看下面的功能:

Ext.override(Ext.grid.RowNumberer, {
    renderer: function(value, metaData, record, rowIdx, colIdx, store) {
      var rowspan = this.rowspan;
      if (rowspan) {
        metaData.tdAttr = 'rowspan="' + rowspan + '"';
      }
      metaData.tdCls = Ext.baseCSSPrefix + 'grid-cell-special';
      //return store.indexOfTotal(record) + 1;
      var incrementedRowId = rowIdx + 1; //doing +1 as row id starts from 0
      var indianRowNumber = incrementedRowId.toLocaleString('en-In');
      return indianRowNumber;
    }
  });

答案 1 :(得分:0)

这可以通过使用renderer函数来实现。这样,您的商店价值就不会有“”,但是您的网格外观会如此。首先,ext将numbercolumn作为字符串存储,因此我们将使用parseInt函数将其转换为int,然后使用myNum.toLocaleString('en-In')此函数将帮助我们将数字转换为印度数字字符串。看看这个example(fiddle)以获得更好的解释。因此,基本上,无论您要显示为印度数字的哪个网格列值,只要在声明网格列时添加以下函数即可:

`header: "Indian Number Column",
 dataIndex: 'currency',
 flex: .5,
 sortable: true,
 renderer: function (val, metaData, r){
     return parseInt(val).toLocaleString('en-In');
 }`
  

您需要确定的是:

     

别忘了使用parseInt或parseFloat,因为toLocaleString仅适用于数字,而ext将numbercolumn值存储为字符串

     

该列的值始终是一个数字,因此parseInt不会失败

奖金提示: 如果您要处理货币,并且想要添加印度货币符号并且还想舍入十进制值,请改用以下代码:

`header: "Indian Number Column",
 dataIndex: 'currency',
 flex: .5,
 sortable: true,
 renderer: function (val, metaData, r){
     return parseFloat(val).toLocaleString('en-In', {
         maximumFractionDigits: 2,
         style: 'currency',
         currency: 'INR'
         });
      }`

答案 2 :(得分:0)

可能更好的方法是为印度编写您自己的语言环境文件(即,他们不提供自己的语言环境文件,尽管我看不到)。在您的Ext框架中查找locale文件夹,然后下载并复制文件的样式。