Tengo un DataGridView cuyo origen de datos es un BindingList. MyObj tiene algunas propiedades que aceptan nulos (como int? Y DateTime?) Deseo implementar la ordenación en mi lista de enlaces, por lo que DataGridView puede ordenar la columna cuando el usuario hace clic en el encabezado de la columna.Int32? con IComparable
Después de buscar, encontré y seguí la respuesta a esta pregunta (DataGridView Column sorting with Business Objects).
No puedo conseguir que esa solución funcione para los tipos Nullable porque no implementan IComparable. Incluso para las clases que implementan IComparable como String, ApplySortCore (...) falla cuando la cadena tiene un valor nulo.
¿Existe una solución para esto? ¿O tengo que implementar una clase contenedora para "Int32?" ?
por ejemplo
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
}
Muchas gracias. También necesito establecer _sortPropertyValue = prop; _sortDirectionValue = direction; _isSortedValue = true; para que el código funcione. Muchas gracias :) – David
Re "comparar/ordenar en propiedades que aceptan nulos" no debería ser un problema. " - a menos que la propiedad tenga el valor 'null', en cuyo caso obtendrá una excepción en tiempo de ejecución. (Supongo - No lo he probado.) – ToolmakerSteve
@ToolmakerSteve, 'OrderBy' y' OrderByDescending' no importa cuando la propiedad devuelve 'null'. El Comparer predeterminado que utiliza clasificará los valores 'null' en la parte superior. Solo tendrá un problema cuando la lista en sí contenga una entrada 'null'. – Ruben