在jqgrid中对自定义格式的列进行排序

在jqgrid中对自定义格式的列进行排序,jqgrid,jqgrid-formatter,Jqgrid,Jqgrid Formatter,我的jqgrid有一个amount列,该列应用了自定义格式,结果可以是amount本身,也可以是特殊字符(例如:“*”,NA,image)。所有特殊字符都是必需的,因为它描述了金额的种类。 (例如:*表示用户无权查看金额) 我的挑战是如何对其进行排序 下面是我的“金额”列的列模型 [name: 'amount', index: 'amount', type: "String", align: "right", sorttype: "float", title: false, formatter

我的jqgrid有一个amount列,该列应用了自定义格式,结果可以是amount本身,也可以是特殊字符(例如:“*”,NA,image)。所有特殊字符都是必需的,因为它描述了金额的种类。 (例如:*表示用户无权查看金额)

我的挑战是如何对其进行排序

下面是我的“金额”列的列模型

[name: 'amount', index: 'amount', type: "String", align: "right", sorttype: "float", title: false, formatter : someCustomFormatterFunction]
例如: 假设我的金额数据是这样的[100180120130160] 但是,在自定义格式设置后,此更改为[100,*,image,130,NA] 我的排序类型是“float”。因为最初要求的只是金额。但更新的需求引入了这些特殊特性

现在,在排序上,我应该看到所有的特殊字符和数字在一起。类似于[100130,*,image,NA]或[*,image,NA,100130]的升序

但是,我得到的是[100,image,130,NA,*]。我能理解为什么我会变成这样

如何以适当的方式实现排序

此外,下一步将是按照指定的顺序对特殊字符进行排序。 我所有的想法都在引导我去实现一些丑陋的大逻辑。 关于如何实施这一点,有什么想法吗

谢谢,
Sam

如果使用自定义格式,并将文本如
*
图像
NA
100
130
放置在列中,则无法使用
排序类型为“float”

我建议您改为使用自定义排序。您需要的只是将
sorttype
定义为函数。在这种情况下,您可以将数据替换为另一个值,该值将在排序过程中使用,而不是原始值。例如,您可以将值
“*”
“image”
“NA”
100
130
替换为
“*”,
“image”
“NA”
“000100”
“000130”
(现在所有值都是字符串)。在这种情况下,数据可能会成功排序为字符串。或者,您甚至可以使用原始编号
100
180
120
130
160
。函数
sorttype
get
obj
作为第二个参数,
obj
表示行的完整数据。如果保留原始值,则可以使用它进行排序。您没有发布任何代码来显示您使用哪种jqGrid,以及如何填充它,所以我现在无法向您提供更多详细信息

有关自定义排序的更多详细信息和代码示例,请参见和