2012-06-27 86 views
3

所以,我一直在關注this guide for data binding on Windows Forms controls(MAD道具筆者,本指南是偉大的),我也用它來創建一個自定義類和綁定DataGridView這一類的集合:如何對綁定到自定義對象集合的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有自己的排序方法,可以使用這樣的:

completeJobListGridView.Sort(completeJobListGridView.Columns["JobName"], ListSortDirection.Ascending); 

然而,當我嘗試這樣做,我得到一個InvalidOperationException,告訴我「DataGridView控件不能,如果它排序綁定到不支持排序的IBindingList。「我已經找到了IBindingList和IBindingListView接口,但是讓我的類繼承這些接口中的任何一個都不能解決問題。

我該怎麼做?我完全卡在這裏...

+0

另一種解決方案是在這裏記錄:http://stackoverflow.com/a/28520948/3317709。 –

回答

1

有很多這些可從谷歌,例如通過搜索「C#可排序綁定列表」。通常,您從BindingList<T>繼承並實施SupportsSortingCore

+2

這工作,我猜。我的主要問題是我沒有用正確的詞組搜索:P 只是要在這裏留下此鏈接,以防其他人想要看到它。 http://www.codeproject.com/Articles/31418/Implementing-a-Sortable-BindingList-Very-Very-Quic – Abion47

+0

另一種解決方案記錄在這裏:http://stackoverflow.com/a/28520948/3317709。 –

相關問題