我遇到类似于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函数。
有关如何使布尔列也可排序的任何建议吗? 提前感谢任何有助于解决这个问题的事情。