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

标签 string grails jquery-ui-sortable numerical

我将数字作为字符串存储在我的数据库中,我想使用 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/

相关文章:

java - 将字符串添加到 StringList,同时它是 HashMap 值的一部分

javascript - 在 Javascript 中用 1 个已知字符和一些未知字符分割字符串

grails - Grails:无法在空对象上调用方法production()

json - Ajax成功,但JSON中的Grails为空

jQuery UI 可排序 - 将更改保存到服务器

javascript - 使用 sortable 获取列表内的值

Jquery Sortable - 排序时禁用 onclick =""

c++ - basic_string 文字在编译时速度更快还是处理得更好?

grails - Intellij使用 “mvn grails:exec”而不是原始grails命令

c++ - 将字符串与 ifstream::getline 生成的字符串进行比较