3

在我的 jqGrid 中,我有一列具有这种格式:'1.234,678'。我想对此列进行排序,并且我正在使用以下代码:

{name:'ZMENG_SOR_VRKME', index:'ZMENG_SOR_VRKME', width:'5', align:'right', sorttype:'number' }

排序不起作用。我认为它没有将 .(dot) 视为数千,例如,如果我有 21,000 - 991,000 - 1.188,000。结果是:991,000 - 21,000 - 1.188,000。

我该如何解决这个问题?

4

1 回答 1

9

如果我正确理解您的问题,您应该更改网格中填充的数据格式。您应该使用纯数字作为输入,并使用formatter: "number"在数字中包含千位分隔符。在我看来,这将是解决您的问题的最佳方法。您可以使用正确的语言文件grid.locale-XX.js,将使用千位分隔符对应于语言环境。或者,您可以使用decimalSeparatorand thousandsSeparatorofformatoptions来指定您的自定义小数和千位分隔符。

或者,您可以提供 unformatter(此处unformat描述的功能)将单元格中显示的文本转换为数字。我认为它应该工作。

另一种可能性是使用自定义排序。您需要定义sorttype为函数,该函数将返回数据的“标准化”版本。在排序期间将使用“标准化”数据而不是原始数据。有关代码示例,请参见答案这个

更新: 免费 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"] } }
于 2013-07-02T13:52:26.730 回答