J'ai un DataGridView dont la source de données est une BindingList. MyObj a quelques propriétés nullable (comme int? Et DateTime?) Je veux implémenter le tri à ma liste de liaison, ainsi le DataGridView peut trier la colonne quand l'utilisateur clique sur l'en-tête de colonne. Après quelques recherches, j'ai trouvé et suivi la réponse à cette question (DataGridView Column sorting with Business Objects).Int32? avec IComparable
Je ne peux pas obtenir cette solution à travailler pour les types Nullable car ils n'implémentent pas IComparable. Même pour les classes qui implémentent IComparable like String, ApplySortCore (...) échoue lorsque la chaîne a une valeur nulle.
Existe-t-il une solution pour cela? Ou dois-je implémenter une classe wrapper pour "Int32?" ?
par exemple
public class Int32Comparable : IComparable
{
public int? Value { get; set; }
#region IComparable<int?> Members
public int CompareTo(object other)
{
// TODO: Implement logic here
return -1;
}
#endregion
}
Merci beaucoup. J'ai également besoin de définir _sortPropertyValue = prop; _sortDirectionValue = direction; _isSortedValue = true; pour que le code fonctionne. Merci beaucoup :) – David
Re "comparaison/tri sur les propriétés NULL ne devrait pas être un problème." - sauf si la propriété a la valeur "null", auquel cas vous obtiendrez une exception d'exécution. (Je suppose - je ne l'ai pas essayé.) – ToolmakerSteve
@ToolmakerSteve, 'OrderBy' et' OrderByDescending' ne dérange pas lorsque la propriété retourne 'null'. Le Comparer par défaut utilisé va trier les valeurs null sur le dessus. Vous aurez seulement un problème quand la liste elle-même contient une entrée 'null'. – Ruben