Как отсортировать ASP.NET DataGrid по длине поля? - PullRequest
0 голосов
/ 18 сентября 2008

У меня есть DataGrid, где каждый столбец имеет SortExpression. Я хотел бы, чтобы выражение сортировки было эквивалентно «ORDER BY LEN (myField)».

Я пытался

SortExpression="LEN(myField)" 

но это вызывает исключение, так как это недопустимый синтаксис. Есть идеи?

Ответы [ 5 ]

3 голосов
/ 18 сентября 2008

В зависимости от вашего вида SQL может работать:

SELECT
 ColumnA as FieldA
 , ColumnB as FieldB
 , LEN(ColumnA) as FieldL
FROM TableName
ORDER BY L

А потом сделай

SortExpression="FieldL"
3 голосов
/ 18 сентября 2008

Как насчет возврата len по запросу, но не показывать этот столбец, а только использовать его как выражение исходного столбца?

Не думаю, что ваша идея поддерживается по умолчанию.

0 голосов
/ 18 сентября 2008

Хммм. Было время, чтобы проверить. Мне удалось заставить SortExpression = "Description.Length" работать. Это 1,1, 2,0 или 3,5?

0 голосов
/ 18 сентября 2008

Используя Linq, вы можете написать свой запрос как:

query.OrderBy(column => column.MyField.Length);
0 голосов
/ 18 сентября 2008

Параметр SortExpression указывает имя столбца для сортировки, за которым следует «ASC» или «DESC» для управления порядком.

Вы можете изменить свойство DataType столбца, чтобы указать пользовательский тип, функция сравнения которого сравнивает длины строк. Это не будет тривиальной задачей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...