2

3列のobjectListViewがあるとしましょう

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

自動並べ替えでは、小さい記事番号は大きい記事番号の下に配置されるため、8080、80、901または901、80、8080のいずれかで並べ替えられますが、最小の番号が上に表示されるようにします。

OrderNumberでも同じです。

そして、ステータスは機能しません。オンの場合、ColumnHeaderを押すとArticleNumberがソートされるだけなので、テキストに応じてステータスをソートします。

そのタスクにはCustomSorterが必要だと思いますが、その使用方法が見つからず、良い例も見つかりませんでした。OLVのクックブックは役に立ちませんでした。

これを行う方法の例はありますか?

4

1 に答える 1

3

カスタムソーターの使用例:

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
    }
}

Compare()のxとyはOLVListItemタイプであることに注意してください。必要に応じてRowObjectフィールドにアクセスできます。

于 2012-12-03T09:12:11.987 に答える