Grails - sortableColumn - принудительная сортировка числовых строк - PullRequest
0 голосов
/ 25 октября 2011

У меня есть номер, хранящийся в моей базе данных как строки, и я хотел бы отсортировать их численно, используя Grails sortableColumns.Есть какой-либо способ сделать это ?

1 Ответ

1 голос
/ 26 октября 2011

Хранение чисел в виде отформатированных строк не позволяет им использовать преимущества собственной числовой сортировки.Посмотрите на тег 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 ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...