C# 使用FastObjectListview的自定义排序不起作用
嘿,我正在使用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
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();
}
}
非常感谢,它成功了。真是太感谢你了,真让我高兴。