Grails - sortableColumn - 强制对数字字符串进行数字排序

时间:2011-10-25 17:06:03

标签: string grails jquery-ui-sortable numerical

我的数字存储在我的数据库中作为字符串,我想使用Grails sortableColumns以数字方式对它们进行排序。反正有没有这样做?

1 个答案:

答案 0 :(得分:1)

将数字存储为格式化字符串会阻止它们利用本机数字排序。看看Grails formatNumber标签,它可以使用您想要的区域设置来显示小数分隔符,这样您就可以使用实际的数字数据,而不必存储格式化的字符串用于显示目的。

如果要排序的域类同时具有格式化和未格式化的数字数据,您可以尝试这样的操作,根据需要替换sort列参数:

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 ]
}