/ / C #, algoritmo de reordenamiento DragDrop - c #, datagridview, arrastrar y soltar

C #, algoritmo de reordenamiento DragDrop - c #, datagridview, arrastrar y soltar

Tengo una lista de objetos en C # que tienen una propiedad llamada "Secuencia". Esta lista se vincula a un DataGridView, ordenado por esta secuencia.

El usuario puede arrastrar y soltar filas, así que si tenemos algo como lo siguiente:

Name,Sequence
Test1,1
Test2,2
Test3,3
Test4,4
Test5,5

Arrastrar "Test1" a entre "Test3" y "Test4" debería modificar la secuencia de cualquier cosa que se realice para que sea la siguiente:

Name,Sequence
Test2,1
Test3,2
Test1,3
Test4,4
Test5,5

No puedo descifrar el algoritmo para usarActualiza la lista cuando arrastran y sueltan una fila. Una forma sencilla sería recorrer todas las filas de la cuadrícula y actualizar la secuencia para que sea el índice de fila + 1, pero creo que esto agregará algo de sobrecarga.

Respuestas

0 para la respuesta № 1

Mira si puedes evitar el almacenamiento. Sequence con el objeto, de lo contrario una posibilidad de ello.Salir de la secuencia siempre quedará. Puede emparejar un objeto con su secuencia para el consumo descendente al enumerar a través del contenedor:

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});
}

1 para la respuesta № 2

pero creo que esto agregará algunos gastos generales.

Muy muy pequeño.

Y tiene el beneficio de no requerir ninguna magia.