我有 2 个 ListView,我正在将选定的项目从一个添加到另一个。第一个 ListView,我们称之为 availableJobs
,第二个 ListView selectedJobs
。人们可以从第一个 ListView 中选择一个或多个工作并将其移动到第二个。现在我想要的是排序应该与第一个 ListView 中的一样。在第一个 availableJobs
中,作业按作业 ID 排序,我只想在 selectedJobs
TreeView 中保留该排序。
例如:
1) 我选择 ID 为 3 的作业并将其移动到 selectedJobs
TreeView
2) 我选择 ID 为 1 的作业并将其移动到 selectedJobs
现在 selectedJobs
中的顺序将是:
工作 3
作业 1
我需要的是,当我添加 ID 为 1 的 Job 时,它会从 ID 为 3 的 Job 进入。
我尝试使用自定义比较器:
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 等的作业放在 2、3 等之前。
最佳答案
您可以使用 ListView 的排序功能:
http://msdn.microsoft.com/en-us/library/ms996467.aspx
或者直接将作业从 ListView1 添加到 ListView2,您可以填充按 Id 排序的 LineItem(或定制对象)列表,您可以将该列表用作 ListView2 的数据源
关于C# ListView排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6190712/