【发布时间】:2011-09-05 15:37:19
【问题描述】:
我有 2 个 ListView,我将选定的项目从一个添加到另一个。第一个 ListView,我们称之为 availableJobs 和第二个 ListView selectedJobs。人员可以从第一个 ListView 中选择工作/工作并将其移动到第二个。现在我想要的是排序应该与第一个 ListView 中的排序保持一致。在第一个availableJobs 中,作业按作业 ID 排序,我只想在 selectedJobs TreeView 中保留该排序。
例如:
1)我选择 ID 为 3 的 Job 并将其移动到 selectedJobs TreeView
2)我选择 ID 为 1 的 Job 并将其移动到 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 等之前。
【问题讨论】:
-
您找到解决方案了吗?
-
也许不是使用
Add(),而是获取所选列表中下一个更高作业的索引,并在索引 - 1 处执行InserAt()。 -
你是如何使用那个比较器的?列表视图上有一些排序的列吗?