Как мне отсортировать ASP.NET DataGrid по длине поля?
Вопрос
У меня есть DataGrid, где каждый столбец имеет SortExpression.Я бы хотел, чтобы выражение сортировки было эквивалентом "ORDER BY LEN(MyField)".
Я пытался
SortExpression="LEN(myField)"
но это создает исключение, поскольку это недопустимый синтаксис.Есть какие-нибудь идеи?
Решение
Как насчет того, чтобы вернуть len уже по запросу, но не показывать этот столбец, а использовать его только как sortexpression вашего исходного столбца?
Я не думаю, что ваша идея поддерживается по умолчанию.
Другие советы
В зависимости от вашего стиля SQL может сработать следующее:
SELECT
ColumnA as FieldA
, ColumnB as FieldB
, LEN(ColumnA) as FieldL
FROM TableName
ORDER BY L
А потом делай
SortExpression="FieldL"
Используя Linq, вы могли бы написать свой запрос следующим образом:
query.OrderBy(column => column.MyField.Length);
Хммм.У меня было немного времени на проверку.Я смог получить SortExpression="Описание.Длина" на работу.Это 1.1, 2.0 или 3.5?
Тот Самый SortExpression
параметр задает имя столбца для сортировки, за которым следует "ASC" или "DESC" для управления порядком.
Вы могли бы изменить DataType
свойство столбца указывать определенный пользователем тип, функция сравнения которого сравнивает длины строк.Это не будет тривиальной задачей.