jqgrid - jqgrid中如何对数字列进行排序

标签 jqgrid

在我的 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,千位分隔符将用于对应的区域设置。或者,您可以使用 formatoptionsdecimalSeparatorthousandsSeparator 来指定自定义小数和千位分隔符。

或者,您可以提供取消格式化程序(here 中描述的unformat 函数),它将单元格中显示的文本转换为数字。我认为它应该有效。

另一种可能性是使用自定义排序。您需要将 sorttype 定义为将返回数据的“规范化”版本的函数。在排序过程中将使用“标准化”数据代替原始数据。请参阅the answerthis 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/

相关文章:

jquery - jqGrid - 在 jquery 选项卡中打开问题(在 Firefox 和 Google Chrome 上)

json - jqGrid 将纪元时间(从毫秒开始)显示为日期时不排序

javascript - 将 jqgrid 属性放在一个公共(public)变量中并重用它们?

javascript - 仅当数据更改时保存 jqgrid.saveRow

javascript - 如何防止排序时被折叠的jqgrid

javascript - Guriddo jqGrid with Bootstrap 中 ‘shrinktofit’ 参数设置为“true”的 setGridWidth 方法中的问题

jquery - 在 jQueryUI 对话框内的 jqGrid 上正确调用 setGridWidth

javascript - 为 colModel edittype 扩展 jqgrid

jquery - 使用下拉 jqgrid 过滤时获取子项目

javascript - 如何避免在免费 jqgrid 中单击单元格编辑时水平滚动