在我的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.
我怎么解决这个问题?
如果我正确理解您的问题,您应该更改网格中填充的数据格式.您应该使用纯数字作为输入,并使用formatter: "number"在数字中包含千位分隔符.在我看来,这将是解决问题的最佳方式.您可以使用正确的语言文件grid.locale-XX.js,将使用千位分隔符对应的语言环境.或者您可以使用decimalSeparator和thousandsSeparator的formatoptions指定自定义的小数和千个分隔符.
或者,您可以提供unformatter(此处unformat描述的功能),将单元格中显示的文本转换为数字.我认为它应该有效.
另一种可能性是使用自定义排序.您需要定义sorttype为将返回数据的"规范化"版本的函数.在排序期间将使用"标准化"数据而不是原始数据.有关代码示例,请参阅答案和此答案.
更新: 免费的jqGrid提供了一些标准模板一样template: "integer",number: "number",template: "integerStr",number: "numberStr"等.因此可以使用
{name: "ZMENG_SOR_VRKME", width: 50, template: "numberStr" }
Run Code Online (Sandbox Code Playgroud)
这相当于使用
{name: "ZMENG_SOR_VRKME", width: 50,
formatter: "number", align: "right", sorttype: "number",
searchoptions: { sopt: ["eq", "ne", "lt", "le", "gt", "ge"] } }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8973 次 |
| 最近记录: |