Como faço para classificar uma DataGrid ASP.NET pelo comprimento de um campo?

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

  •  01-07-2019
  •  | 
  •  

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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top