如何使用BindingListView在DataGridView中实现布尔列的自动排序?

时间:2014-05-30 10:47:17

标签: c# sorting datagridview boolean datasource

我遇到类似于this的问题(DataGridView在绑定到列表时不能自动排序,列标题单元格中没有排序字形),并使用建议的BindListView解决了它。 /> 有一个对象列表(例如类计算机)

public class Computer
{  
  public bool isServer { get; set; }
  public string Name { get; set; }  
  ...
}

以这种方式绑定到DataGridView dgv,排序适用于所有列= string,int或DateTime类型的属性,但不适用于 bool ,如isSever。 DataGridView将bool列显示为可点击的DataGridViewCheckBox,与字符串类型(Y / N或类似)的文本表示相比,用户更容易输入,但它们不像其他列那样排序,尽管我可以以编程方式执行此操作像这样:

BindingListView<T> view = new BindingListView<T>(this);
dgv.DataSource = view;
dgv.Sort(dgv.Columns[0], System.ComponentModel.ListSortDirection.Descending);

BindingListView可以提供这个功能,用于排序bool列开箱即用(使用dll版本1.2.0.0),我只是缺少一些(对于其他人)明显的额外步骤? 或者是否有一种(简单)方法通过修改该库的源代码来扩展功能?

我已经从sourceforge.net下载了源代码,并设法编译它以重新创建dll,但我不知道在哪里修改或修改什么来支持bool类型。

我怀疑它在文件AggregateBindingListView.cs中的某个地方,可能在SortCompare类中的#region Sorting中,但是在那里使用的复杂概念和代码有点高于我的头部,但是,特别是看似速度使用MSIL-Opcodes,DynamicMethods和Delegates优化版本的Compare函数。

有关如何使布尔列也可排序的任何建议吗? 提前感谢任何有助于解决这个问题的事情。

0 个答案:

没有答案