我正在使用C#和Visual Studio制作项目。问题是我使用了一个我想要排序的GridView(在本例中是Prototype Code列),我创建了一个按钮来执行此操作:
void SortButton_Click(Object sender, EventArgs e)
{
dataGridView1.Sort(PrototypeCodeDataGridViewTextBoxColumn, System.ComponentModel.ListSortDirection.Ascending);
}
但是在按下按钮的那一刻我得到了这个:
System.InvalidOperationException:' DataGridView控件不能 如果绑定到不支持的IBindingList,则命令 排序顺序。'
我已经获得了 Prototypes.Datasource ,我想我必须改变它以使其可以排序,但是如何? 我感谢您的帮助,谢谢!
答案 0 :(得分:2)
如您所见,基础BindingList
类does not support排序。你必须自己实现它。
简单的解决方案是派生一个支持排序的新类。请参阅一个简单示例here。
但对于我自己,我更喜欢CSLA's solution,这是对所需接口的全新重新实现,因为它提供了一个排序视图,而不是修改原始底层集合。
用法:
var myBindingSource = new SortedBindingList<MyType>(myCollection);
myBindingSource.ApplySort(propertyName, ListSortDirection.Ascending);
dataGridView1.DataSource = myBindingSource;
请注意,您实际上不需要创建SortButton
,因为如果提供的数据源支持排序,则DataGridView
标题将是可点击的,它会自动显示排序方向 - 请参阅第一个链接中的图像。