2008-09-18 20 views
0

J'ai un DataGrid où chaque colonne a une SortExpression. Je voudrais que l'expression de tri soit l'équivalent de "ORDER BY LEN (myField)".Comment trier un DataGrid ASP.NET par la longueur d'un champ?

J'ai essayé

SortExpression="LEN(myField)" 

mais cela jette une exception car il n'est pas une syntaxe valide. Des idées?

Répondre

3

En ce qui concerne le renvoi de la requête par la requête, mais ne montrez pas cette colonne, utilisez-la uniquement comme la sortexpression de votre colonne d'origine?

Je ne pense pas que votre idée soit supportée par défaut.

3

En fonction de votre goût SQL suivantes pourrait fonctionner:

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

Et puis faire

SortExpression="FieldL" 
0

Le paramètre SortExpression spécifie le nom de la colonne pour trier, suivi par « ASC » ou " DESC "pour contrôler la commande.

Vous pouvez modifier la propriété DataType de la colonne pour spécifier un type défini par l'utilisateur dont la fonction de comparaison compare les longueurs de chaîne. Ce ne sera pas une tâche triviale.

0

LINQ, vous pouvez écrire votre requête comme:

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

Hmmm. Avait un peu de temps pour tester. J'ai été en mesure d'obtenir SortExpression = "Description.Length" pour fonctionner. Est-ce 1.1, 2.0 ou 3.5?

+0

Bonjour Jason. C'est Visual Studio 2008, fonctionnant sur .NET 2.0. Je l'ai testé à nouveau et je n'arrive pas à le faire fonctionner comme vous le décrivez. Les données sont renvoyées à partir d'une procédure stockée à l'aide d'un DataAdapter. Merci, RB. –