C# ListView sorting

本文关键字:sorting ListView | 更新日期: 2023-09-27 17:58:08

我有两个ListView,正在将所选项目从一个添加到另一个。第一个ListView,让我们称之为availableJobs,第二个ListView为selectedJobs。人员可以从第一个ListView中选择一个或多个作业,然后将其移动到第二个ListView。现在我想要的是排序应该和第一个ListView中的一样。在第一个availableJobs中,作业按作业ID排序。我只想在selectedJobs树视图中保持这种排序。

例如:

1) 我选择ID为3的作业并将其移动到selectedJobs树视图
2) 我选择ID为1的作业并将其移动到selectedJobs

现在发生的是,selectedJobs中的顺序将是:

作业3
作业1

我需要的是,当我添加ID为1的作业时,它将从ID为3的作业进入。

我尝试使用自定义比较器:

    public class IntegerComparer : IComparer
    {
        private int _colIndex;
        public IntegerComparer(int colIndex)
        {
            _colIndex = colIndex;
        }
        public int Compare(object x, object y)
        {
            int nx = int.Parse((x as ListViewItem).SubItems[_colIndex].Text);
            int ny = int.Parse((y as ListViewItem).SubItems[_colIndex].Text);
            return nx.CompareTo(ny);
        }
    }

但问题是,它将id为10、11等的Job放在2、3等之前

您可以使用ListView:的排序功能

http://msdn.microsoft.com/en-us/library/ms996467.aspx

或者直接将作业从ListView1添加到ListView2,您可以填充按Id排序的LineItem(或定制对象)列表,并将该列表用作ListView2 的DataSource

您可以使用自定义排序。为此,必须实现IComparer类并设置ListViewItemSorter属性。以下链接有一个示例实现:

http://csharpexamples.com/c-sort-listview-items-columns/

C# ListView sorting