Как мне отсортировать ASP.NET DataGrid по длине поля?

StackOverflow https://stackoverflow.com/questions/91766

  •  01-07-2019
  •  | 
  •  

Вопрос

У меня есть 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 свойство столбца указывать определенный пользователем тип, функция сравнения которого сравнивает длины строк.Это не будет тривиальной задачей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top