2012-11-29 73 views
2

排序比方說,我有3列定製與ObjectListView

ArticleNumber | OrderNumber | Status 
8080   | 123.456.789 | Delivered 
80   | 456.789.101 | Pending 
901   | 11.111.111 | Delivered 

與自動分揀,較小的文章編號,會去下更大的文章編號,一個objectListView,所以它要麼排序8080,80,901或901,80,8080,但我希望最小的數字在上面。

On OrderNumber相同。

狀態不起作用。在我按下ColumnHeader時,它只是對ArticleNumber進行排序,所以我想根據文本對Status進行排序。

我想我需要一個CustomSorter來完成那項任務,但我找不到如何使用它,但我找不到一個好例子,OLV的食譜沒有幫助我。

你有這樣的例子嗎?

+0

也許這個鏈接可以幫助你如何使用[ObjectListView http://www.codeproject.com/Articles/16009/A-Much-Easier-to-Use-ListView] – MethodMan

回答

2

實施例使用自定義分類器:

MyOlv.CustomSorter = delegate(OLVColumn column, SortOrder order) { 
    // check which column is about to be sorted and set your custom comparer 
    if (column == ArticleNumber) { 
     MyOlv.ListViewItemSorter = new ArticleNumberComparer(order); 
    } 
};   

class ArticleNumberComparer : IComparer { 
    SortOrder _Order; 

    public ArticleNumberComparer(SortOrder order) { 
     _Order = order; 
    } 

    public int Compare(object x, object y) { 
     // perform you desired comparison depending on the _Order 
    } 
} 

注意,X和在比較()是類型的ListViewItem的收率您可以查看this關於如何訪問底層模型對象。