我将数字作为字符串存储在我的数据库中,我想使用 Grails sortableColumns
对它们进行数字排序.有没有办法做到这一点?
最佳答案
将数字存储为格式化字符串会阻止它们利用 native 数字排序。看看 Grails formatNumber 标签,它可以使用你想要的语言环境来显示小数分隔符,这样你就可以使用实际的数字数据,而不必为了显示目的而存储格式化的字符串。
如果您要排序的域类同时具有格式化和未格式化的数字数据,您可以尝试这样的操作,根据需要替换排序列参数:
def list = {
if (params?.sort == 'formattedNumber') {
params.sort = 'rawNumber'
}
[ records : Record.list(params) ]
}
如果您的域类只有格式化的字符串,您可以尝试将其解析为 BigDecimal(或任何匹配的数字类型),但如果您的服务器的语言环境与字符串格式的小数分隔符语言环境不匹配,这可能无法正常工作。
def list = {
def records = (params?.sort == 'formattedNumber') Record.list().sort{ it.formattedNumber.toBigDecimal() : Record.list(params)
}
[ records : records ]
}
关于string - Grails - sortableColumn - 强制对数字字符串进行数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7893029/