如何格式化EXTJS 3.4网格中的数字列以显示印度数字格式?
例如:45,78,895.45
答案 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文件夹,然后下载并复制文件的样式。