【发布时间】:2012-06-27 23:20:34
【问题描述】:
所以我一直在关注this guide for data binding on Windows Forms controls(作者的疯狂道具,本指南很棒),我已经使用它来创建一个自定义类并将DataGridView 绑定到此类的集合:
class CompleteJobListEntry
{
private string _jobName;
private Image _jobStatus;
private DateTime _jobAddedDate;
private string _jobAddedScanner;
private string _jobAddedUser;
private string _jobLastActivity;
private DateTime _jobActivityDate;
private string _jobActivityUser;
public string JobName { get { return _jobName; } set { this._jobName = value; } }
public Image JobStatus { get { return _jobStatus; } set { this._jobStatus = value; } }
public DateTime JobAddedDate { get { return _jobAddedDate; } set { this._jobAddedDate = value; } }
public string JobAddedScanner { get { return _jobAddedScanner; } set { this._jobAddedScanner = value; } }
public string JobAddedUser { get { return _jobAddedUser; } set { this._jobAddedUser = value; } }
public string JobLastActivity { get { return _jobLastActivity; } set { this._jobLastActivity = value; } }
public DateTime JobActivityDate { get { return _jobActivityDate; } set { this._jobActivityDate = value; } }
public string JobActivityUser { get { return _jobActivityUser; } set { this._jobActivityUser = value; } }
}
此时,我从各种 SQL 数据库中导入了一堆数据来填充表,结果非常好。该指南甚至为添加过滤器提供了一个很好的起点,我打算稍后再跟进。不过,就目前而言,我坚持对新生成的DataGridView 进行排序。环顾四周,我发现 DataGridView 有自己的 Sort 方法,可用如下:
completeJobListGridView.Sort(completeJobListGridView.Columns["JobName"], ListSortDirection.Ascending);
但是,当我尝试执行此操作时,我收到一个 InvalidOperationException,它告诉我“如果 DataGridView 控件绑定到不支持排序的 IBindingList,则无法对其进行排序。”我找到了 IBindingList 和 IBindingListView 接口,但是让我的类继承这两个接口中的任何一个都不能解决问题。
我该怎么做?我完全被困在这里......
【问题讨论】:
-
Google 提供了很多这些,例如通过搜索“C# 可排序绑定列表”。通常你从
BindingList<T>继承并实现SupportsSortingCore。 -
这行得通,我猜。我的主要问题是我没有使用正确的短语进行搜索:P 只是将这个链接留在这里,以防其他人想看到它。 codeproject.com/Articles/31418/…
-
此处记录了另一种解决方案:stackoverflow.com/a/28520948/3317709.
-
此处记录了另一种解决方案:stackoverflow.com/a/28520948/3317709.
标签: c# winforms datagridview bindingsource