C#ObjectListView-FastObjectListView自定义排序问题

问题描述

我正在尝试使用FastObjectListView进行自定义排序。 我按照用户grammarian的描述设置了VirtualListDataSource和类似的对象

m_olvResults.VirtualListDataSource = new OwnSortingDataSource(m_olvResults);
m_olvResults.Setobjects(psdResults.ResultList);

这些是相应的类:

public class PSDResultEntryComparer : IComparer
{
    public PSDResultEntryComparer()
    {
    }

    public int Compare(object x,object y)
    {
        // perform you desired comparison depending on the _Order
        if (x is PSDResultEntry && y is PSDResultEntry)
        {
            PSDResultEntry entry1 = x as PSDResultEntry;
            PSDResultEntry entry2 = y as PSDResultEntry;

            if (entry1.FieldNo[0] == entry2.FieldNo[0])
            {
                int val1 = int.Parse(entry1.FieldNo.Remove(0,1));
                int val2 = int.Parse(entry2.FieldNo.Remove(0,1));

                if (val1 == val2)
                {
                    return 0;
                }
                if (val1 < val2)
                {
                    return -1;
                }

                return 1;
            }
            else
            {
                return string.Compare(entry1.FieldNo,entry2.FieldNo);
            }
        }
        else
        {
            return 0;
        }
    }
}

public class OwnSortingDataSource : FastObjectListDataSource
{
    public OwnSortingDataSource(FastObjectListView lv) : base(lv)
    {
        listView.ListViewItemSorter = new PSDResultEntryComparer();
    }

    public override void Sort(OLVColumn column,SortOrder sortOrder)
    {
        if (column.Index == 0)
        {
            ArrayList objects = (ArrayList)this.listView.Objects;
            objects.sort(new PSDResultEntryComparer());
            RebuildindexMap();
        }
        else
        {
            base.sort(column,sortOrder);
            RebuildindexMap();
        }
    }
}

当我调试时,我看到“ objects.sort(new PSDResultEntryComparer())” 工作正常,但列表视图中显示的数据未更新。

有什么想法我在这里想念的吗?

最诚挚的问候,

亚历山大

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)