Ordinamento di un elenco di oggetti con riordino e visualizzazioni diverse

1

Il problema che ho è questo: ho una lista di elementi. Ogni elemento ha più proprietà. Ho una vista in cui visualizzo tutti gli elementi e ho una vista in cui visualizzo gli articoli in base ai valori nelle proprietà. Ora, vorrei consentire all'utente di ordinare gli elementi (trascinamento). Quando gli utenti ordinano gli elementi nella vista che li visualizza tutti (nessun filtro), tutto va bene, ma poi quando selezionano un filtro, cambiano l'ordine mentre sono nel filtro e rimuovono il filtro - le cose si incasinano perché il numero dell'ordine mentre con filtro non corrisponde a quello senza filtro.

Il mio pensiero era di incrementare il valore dell'ordine di 10000 e posizionare sempre l'oggetto nel punto in cui era rimasto. Quindi, se lascio un articolo 4 con Order 40000 tra gli articoli 2 e 3, il nuovo ordine per l'articolo 4 sarà 25000. In questo modo anche se ho un filtro attivato e gli elementi mancano dall'elenco e l'elenco è riordinato, il cambiamento di ottenere lo stesso numero d'ordine dopo aver rimosso il filtro è piccolo.

Esempio:

Elenco completo:

Item 1 - 10000 Item 2 - 20000 Item 3 - 30000 Item 4 - 40000 Item 5 - 50000

Elenco filtrato:

Item 1 - 10000 Item 2 - 20000 Item 4 - 40000

Elenco filtrato riordinato:

Item 1 - 10000 Item 4 - 15000 Item 2 - 20000

Elenco completo riordinato:

Item 1 - 10000 Item 4 - 15000 Item 2 - 20000 Item 3 - 30000 Item 5 - 50000

Ora, se sposto di nuovo l'Articolo 2 sopra l'elemento 4, l'Oggetto 2 otterrà 12500. Il problema che sto vedendo è che se continui a mescolare due oggetti, molto presto finirà i punti vuoti e sarà 1 (arrotondato). Sembra che ciò accada dopo 14 cambi di ordine di due elementi che sono uno accanto all'altro. (log base 2 di 10000).

Hai qualche idea su quale sarebbe un approccio migliore per risolvere questo problema? Stavo anche pensando di memorizzare PreviousItemId e NextItemId su ciascun elemento e ricalcolare su ogni cambio di posizione.

    
posta Hubert Jarema 18.07.2018 - 22:03
fonte

0 risposte

Leggi altre domande sui tag