2008-09-18 2 views
0

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

Я попытался

SortExpression="LEN(myField)" 

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

ответ

3

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

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

3

В зависимости от вашего SQL привкуса следующий может работать:

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

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

SortExpression="FieldL" 
0

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

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

0

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

query.OrderBy(column => column.MyField.Length); 
0

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

+0

Привет, Джейсон. Это Visual Studio 2008, работающая на .NET 2.0. Я тестировал его снова и не могу заставить его работать, как вы описываете. Данные возвращаются из хранимой процедуры с использованием DataAdapter. Спасибо, РБ. – 2008-09-19 11:14:30

Смежные вопросы