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/