在我的 jqGrid 中,我有一个具有以下格式的列:“1.234,678”。我想对此列进行排序,并且我正在使用以下代码:
{名称:'ZMENG_SOR_VRKME',索引:'ZMENG_SOR_VRKME',宽度:'5',对齐:'右',排序类型:'数字'}
排序不起作用。我认为它不会将 .(dot) 视为数千,例如,如果我有 21,000 - 991,000 - 1.188,000。结果是:991,000 - 21,000 - 1.188,000。
我该如何解决这个问题?
最佳答案
如果我正确理解您的问题,您应该更改网格中填充的数据格式。您应该使用纯数字作为输入,并使用 formatter: "number"
在数字中包含千位分隔符。我认为这将是解决您的问题的最佳方式。您可以使用正确的语言文件grid.locale-XX.js
,千位分隔符将用于对应的区域设置。或者,您可以使用 formatoptions
的 decimalSeparator
和 thousandsSeparator
来指定自定义小数和千位分隔符。
或者,您可以提供取消格式化程序(here 中描述的unformat
函数),它将单元格中显示的文本转换为数字。我认为它应该有效。
另一种可能性是使用自定义排序。您需要将 sorttype
定义为将返回数据的“规范化”版本的函数。在排序过程中将使用“标准化”数据代替原始数据。请参阅the answer和 this one代码示例。
更新: Free jqGrid提供了一些标准模板,例如 template: "integer"
, number: "number"
, template: "integerStr"
, number: "numberStr"
等。因此可以使用
{name: "ZMENG_SOR_VRKME", width: 50, template: "numberStr" }
这相当于使用
{name: "ZMENG_SOR_VRKME", width: 50,
formatter: "number", align: "right", sorttype: "number",
searchoptions: { sopt: ["eq", "ne", "lt", "le", "gt", "ge"] } }
关于jqgrid - jqgrid中如何对数字列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17426976/