我在C#中有一个对象列表,它有一个名为'Sequence'的属性。然后将此列表绑定到DataGridView,按此序列排序。
用户可以拖放行 - 所以如果我们有以下内容:
Name,Sequence
Test1,1
Test2,2
Test3,3
Test4,4
Test5,5
将'Test1'拖到'Test3'和'Test4'之间应该修改任何有效的序列:
Name,Sequence
Test2,1
Test3,2
Test1,3
Test4,4
Test5,5
我无法弄清楚拖放行时用于更新列表的算法。一种简单的方法是循环遍历网格中的所有行,并将序列更新为行索引+ 1,但我认为这会增加一些开销。
答案 0 :(得分:2)
但我认为这会增加一些开销。
非常非常少。
它的好处是不需要任何魔法。
答案 1 :(得分:0)
看看你是否可以避免将Sequence
与对象一起存储,否则它将永远不会出现。在枚举容器时,您可以将对象与其序列配对以供下游使用:
class MyData {
string Name {get; set;}
}
class DataWithSequence {
MyData Data {get;set;}
int Sequence{get;set;}
}
...
IList<MyData> list = new List<MyData>();
IEnumerable<DataWithSequence> GetData() {
return list.Select((d,i)=> new DataWithSequence {Data=d, Sequence=i+1});
}