C# 使用FastObjectListview的自定义排序不起作用

C# 使用FastObjectListview的自定义排序不起作用,c#,.net,winforms,sorting,listview,C#,.net,Winforms,Sorting,Listview,嘿,我正在使用FastObjectListview,现在我需要对两列进行排序。 所以我试着用我在上面找到的例子,但我无法让它起作用 class MyCustomSortingDataSource : FastVirtualListDataSource { override public void SortObjects(OLVColumn column, SortOrder order) { // do some amazing sorting here

嘿,我正在使用FastObjectListview,现在我需要对两列进行排序。 所以我试着用我在上面找到的例子,但我无法让它起作用

class MyCustomSortingDataSource : FastVirtualListDataSource
{ 
    override public void SortObjects(OLVColumn column, SortOrder order) { 
        // do some amazing sorting here 
        this.RebuildIndexMap(); // you must call this otherwise the control will not work properly 
    }; 
}; 
...
this.myFastObjectListView.DataSource = new MyCustomSortingDataSource(this.myFastObjectListView);
首先,我补充说:

using BrightIdeasSoftware;
但该名称空间不包含FastVirtualListDataSource,它包含FastObjectListDataSource

然而,在FastObjectListDataSource中没有要重写的SortObjects方法,有一个排序方法,我想我应该重写它

这是我得到的,而不是示例代码:

class MyCustomSortingDataSource : FastObjectListDataSource 
{
    public MyCustomSortingDataSource(FastObjectListView listView) 
        : base(listView) 
    {
    }

    public override void Sort(OLVColumn column, SortOrder sortOrder) 
    {
        base.Sort(column, sortOrder); 
        // do some amazing sorting here
        // base.ObjectList.Sort(new ModelObjectComparer(this.olvGroupCln, SortOrder.Ascending, column, sortOrder));
        this.RebuildIndexMap(); // you must call this otherwise the control will not work properly 
    }
}
我无法访问olvGroupCln,它是我需要排序的第一列,在对该列排序后,我需要对用户单击的列进行排序

如果能得到一些帮助,我们将不胜感激


提前谢谢

这一直是文档的问题——它从来都不是最新的。我来修文件

我猜您无法访问
olvGroupCln
变量,因为它在表单上,您需要它在分类器中?是这样吗

只需为自定义分类器提供一个属性,该属性保存要排序的列。无论何时设置
olvGroupCln
,也要在分类器上设置属性。像这样的

class MyCustomSortingDataSource : FastObjectListDataSource
{
    public MyCustomSortingDataSource(FastObjectListView listView)
        : base(listView) { }

    public OLVColumn SortColumn {
        get { return this.sortColumn; }
        set { this.sortColumn = value; }
    }
    private OLVColumn sortColumn;

    public override void Sort(OLVColumn column, SortOrder sortOrder)
    {
        if (sortOrder != SortOrder.None) {
            ArrayList objects = (ArrayList)this.listView.Objects;
            objects.Sort(new ModelObjectComparer(this.SortColumn, SortOrder.Ascending, column, sortOrder));

        }
        this.RebuildIndexMap();
    }
}

非常感谢,它成功了。真是太感谢你了,真让我高兴。