Jul*_*i15 0 c# sorting gridview datasource visual-studio
我正在使用 C# 和 Visual Studio 制作一个项目。问题是我正在使用我想要排序的 GridView(在这种情况下是 Prototype Code 列),我创建了一个按钮,它执行以下操作:
void SortButton_Click(Object sender, EventArgs e)
{
dataGridView1.Sort(PrototypeCodeDataGridViewTextBoxColumn, System.ComponentModel.ListSortDirection.Ascending);
}
Run Code Online (Sandbox Code Playgroud)
但是在按下按钮的那一刻,我得到了这个:
System.InvalidOperationException: '如果 DataGridView 控件绑定到不支持排序顺序的 IBindingList,则无法对其进行排序。'
我有Prototypes.Datasource,我想这就是我必须改变的东西才能使它可排序,但是如何?我会感谢您的帮助,谢谢!
如您所见,基BindingList类不支持排序。你必须自己实现它。
简单的解决方案是派生一个支持排序的新类。请参阅此处的简单示例。
但就我自己而言,我更喜欢CSLA 的解决方案,这是对所需接口的全新重新实现,因为它提供了一个排序视图,而不是修改原始的底层集合。
用法:
var myBindingSource = new SortedBindingList<MyType>(myCollection);
myBindingSource.ApplySort(propertyName, ListSortDirection.Ascending);
dataGridView1.DataSource = myBindingSource;
Run Code Online (Sandbox Code Playgroud)
另请注意,您实际上并不需要创建一个,SortButton因为如果提供的数据源支持排序,那么DataGridView标题将是可点击的并且它会自动显示排序方向 - 请参阅第一个链接中的图像。
2020 年更新:
去年我将我的库开源,所以你也可以使用 my SortableBindingList<T>,它也修复了原始库的性能问题BindingList。您可以从NuGet下载它。
| 归档时间: |
|
| 查看次数: |
3021 次 |
| 最近记录: |