从管理UI控制列表的排序顺序

时间:2009-05-07 13:32:07

标签: c# .net algorithm sorting

我有一个数据列表,用户可以控制它的排序顺序。

它看起来像这样

Apples     /\  \/
Oranges    /\  \/
pears      /\  \/
banana     /\  \/
Pineapples /\  \/
etc        /\  \/
/ \和/意味着向上和向下箭头

当用户点击时,我想要检索当前的排序顺序并从中取出一个(因此它的值越小,排序顺序越高。

当用户点击时,我会做相反的

我想我还需要确定列表中是否已经存在我想要分配的新值,并在相反方向调整该项目的排序顺序

这似乎是实现这一目标的好方法吗?

或者有更聪明的方法吗?

任何人都有任何示例代码。我正在使用.net 3.5所以linq没关系

该列表存储在内存缓存中 - IList<mycustomobj>

感激地收到任何建议

编辑: 我担心的问题是最初没有排序顺序 - 一切都将为零。我建议的算法有一个隐含的假设,即排序顺序总是连续的。但删除行时会发生什么?排序顺序列表中会有一个空白,所以简单地添加1并取走1可能没有任何区别 - 我该如何处理这种情况?

1 个答案:

答案 0 :(得分:1)

这是一种方法。在我的应用程序中,我们要么使用拖放,要么使用一个向上箭头和一个向下箭头来向上/向下移动所选元素。

如果您有一些确定排序顺序的属性,当用户单击向上箭头时,您只需要使用前一个元素的排序位置置换当前元素的排序位置,除非它是第一个元素(在这种情况下不执行任何操作)。使用向下箭头的反向逻辑...

编辑:

如果您的商品还没有排序位置,您可以浏览列表并指定从1到n的排序位置。 如果删除了行,请将所有后续项目的排序位置减一。