我有一个数据列表,用户可以控制它的排序顺序。
它看起来像这样
Apples /\ \/
Oranges /\ \/
pears /\ \/
banana /\ \/
Pineapples /\ \/
etc /\ \/
> / \和/意味着向上和向下箭头
当用户点击时,我想要检索当前的排序顺序并从中取出一个(因此它的值越小,排序顺序越高。
当用户点击时,我会做相反的
我想我还需要确定列表中是否已经存在我想要分配的新值,并在相反方向调整该项目的排序顺序
这似乎是实现这一目标的好方法吗?
或者有更聪明的方法吗?
任何人都有任何示例代码。我正在使用.net 3.5所以linq没关系
该列表存储在内存缓存中 - IList<mycustomobj>
感激地收到任何建议
编辑: 我担心的问题是最初没有排序顺序 - 一切都将为零。我建议的算法有一个隐含的假设,即排序顺序总是连续的。但删除行时会发生什么?排序顺序列表中会有一个空白,所以简单地添加1并取走1可能没有任何区别 - 我该如何处理这种情况?
答案 0 :(得分:1)
这是一种方法。在我的应用程序中,我们要么使用拖放,要么使用一个向上箭头和一个向下箭头来向上/向下移动所选元素。
如果您有一些确定排序顺序的属性,当用户单击向上箭头时,您只需要使用前一个元素的排序位置置换当前元素的排序位置,除非它是第一个元素(在这种情况下不执行任何操作)。使用向下箭头的反向逻辑...
编辑:
如果您的商品还没有排序位置,您可以浏览列表并指定从1到n的排序位置。 如果删除了行,请将所有后续项目的排序位置减一。