Les champs avec NULL ont tendance à apparaître en haut des colonnes triées (à moins que le tri ne soit dans l'ordre décroissant). Vous voyez donc probablement des lignes contenant à la fois hotelid et dshotelid au lieu de top?
Comment cette table de données est-elle remplie? Si cela provient d'une requête de base de données, il est simple de construire une ou plusieurs colonnes supplémentaires qui contiennent la clé de tri dont vous avez besoin - qu'il s'agisse d'un amalgame d'autres colonnes ou d'un autre identifiant unique.
EDIT: 4 février 2010 - en réponse à votre solution « FilterAndSortTable »:
Votre solution fonctionne mais pas à cause de la FilterAndSortTable - c'est parce que vous avez utilisé un ordre de tri différent.
À l'origine, vous utilisiez "dsohtelid, hotelid".
La deuxième fois, vous avez utilisé "dshotelid desc, hotelid desc".
Cela a pour effet de mettre vos non-nulls en haut et les nulls en bas, mais je contesterais que cela se qualifie comme une bonne solution. Vos identifiants sont maintenant triés à l'envers - ce que je suppose que vous pourriez vouloir éviter, d'où ma suggestion d'une nouvelle colonne de tri qui respecterait cela.
Pourtant, si l'ordre des ids n'a pas d'importance, votre solution est très bien et vous pouvez simplement coller avec votre code d'origine, avec l'ajout de « desc », comme ceci:
dtmaintable.DefaultView.Sort = "dshotelid desc, hotelid desc"
Bien sûr Si quelque chose que j'ai dit ici vous a été utile, une tique serait grandement appréciée. Cela m'aiderait à atteindre 50 points de repêchage et enfin à pouvoir écrire des commentaires. :)
Essayez cette question avant: http: // stackoverflow.com/questions/582374/dataview-tri-plus-que-juste-asc-desc-besoin-personnalisé-tri – roufamatic
son ne fonctionne pas –
Avez-vous déjà vu ma réponse à votre solution FilterAndSortTable? Voir la partie modifiée de ma réponse ci-dessous .. – GenericMeatUnit