Como faço para classificar uma DataGrid ASP.NET pelo comprimento de um campo?
Pergunta
Eu tenho um DataGrid onde cada coluna tem um SortExpression. Gostaria que a expressão de classificação para ser o equivalente de "ORDER BY LEN (myField)".
Eu tentei
SortExpression="LEN(myField)"
mas isso gera uma exceção, pois não é válido sintaxe. Alguma idéia?
Solução
E sobre devolver o já len pela consulta, mas não mostram essa coluna, só usá-lo como SortExpression da sua coluna original?
Eu não acho que sua idéia é suportada por padrão.
Outras dicas
Dependendo do seu sabor SQL o seguinte poderia funcionar:
SELECT
ColumnA as FieldA
, ColumnB as FieldB
, LEN(ColumnA) as FieldL
FROM TableName
ORDER BY L
E, em seguida, fazer
SortExpression="FieldL"
Usando Linq, você poderia escrever sua consulta como:
query.OrderBy(column => column.MyField.Length);
Hmmm. Teve algum tempo para teste. Eu era capaz de conseguir SortExpression = "Description.Length" ao trabalho. É este o 1.1, 2.0 ou 3.5?
Os parâmetros SortExpression
especifica o nome da coluna para tipo, seguido por "ASC" ou "DESC" para controlar a ordem.
Você pode alterar a propriedade DataType
da coluna para especificar um tipo definido pelo utilizador cuja função comparador compara comprimentos de cadeia. Não será uma tarefa trivial.