我有一个DataGridView,其数据源是BindingList。MyObj有几个可空属性(比如int?和DateTime?)。我希望为我的绑定列表实现排序功能,这样当用户点击列标题时,DataGridView就可以对该列进行排序。
经过一番搜索和研究,我发现并遵循了这个问题的答案(DataGridView Column sorting with Business Objects)。
但是,由于Nullable类型没有实现IComparable,我无法让那个解决方案适用于它们。即使是实现了IComparable的类,如String,在其值为null时也会导致ApplySortCore(...)失败。
是否有解决方案?还是我必须为“Int32?”实现一个包装器类?
经过一番搜索和研究,我发现并遵循了这个问题的答案(DataGridView Column sorting with Business Objects)。
但是,由于Nullable类型没有实现IComparable,我无法让那个解决方案适用于它们。即使是实现了IComparable的类,如String,在其值为null时也会导致ApplySortCore(...)失败。
是否有解决方案?还是我必须为“Int32?”实现一个包装器类?
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
}
null
,否则您将会得到运行时异常。(我猜的 - 我没有尝试过。) - ToolmakerSteveOrderBy
和OrderByDescending
不会在属性返回null
时出现问题。它使用的默认比较器将对null
值进行排序。只有当列表本身包含null
条目时,您才会遇到问题。 - Ruben