在我的jqGrid中,我有一个具有以下格式的列:' 1.234,678'。我想对此列进行排序,我正在使用此代码:
{name:'ZMENG_SOR_VRKME', index:'ZMENG_SOR_VRKME', width:'5', align:'right', sorttype:'number' }
排序不起作用。我认为它不考虑。(点)数千,例如,如果我有21,000 - 991,000 - 1.188,000。结果是:991,000 - 21,000 - 1.188,000。
我该如何解决这个问题?
答案 0 :(得分:7)
如果我正确理解您的问题,您应该更改网格中填充的数据格式。您应该使用纯数字作为输入,并使用formatter: "number"
在数字中包含千位分隔符。在我看来,这将是解决问题的最佳方式。您可以使用正确的语言文件grid.locale-XX.js
将使用与区域设置相对应的千位分隔符。或者,您可以使用decimalSeparator
的{{1}}和thousandsSeparator
来指定自定义小数和千位分隔符。
或者,您可以提供无格式化(formatoptions
函数描述here),将单元格中显示的文本转换为数字。我认为它应该有用。
另一种可能性是使用自定义排序。您需要将unformat
定义为函数,该函数将返回数据的“规范化”版本。在排序期间将使用“标准化”数据而不是原始数据。有关代码示例,请参阅the answer和this one。
更新: Free jqGrid提供了一些标准模板,例如sorttype
,template: "integer"
,number: "number"
,template: "integerStr"
等。因此可以使用
number: "numberStr"
这相当于
的用法{name: "ZMENG_SOR_VRKME", width: 50, template: "numberStr" }