2013-04-24 11 views
6

La mia applicazione utilizza i tasti Q e A per passare all'elemento successivo in ObjectListView, che funziona benissimo fintanto che l'utente non ordina gli elementi dell'elenco utilizzando una delle intestazioni di colonna . Se l'utente ha ordinato, premendo i tasti Q/A si fa in modo che l'elenco salti intorno agli elementi dell'elenco, poiché sembra utilizzare l'ordine originale anziché l'ordine corrente.Ottieni elemento successivo/precedente in ObjectListView

Quindi sto cercando una soluzione che permetta all'utente di passare all'elemento successivo anche dopo che l'utente ha ordinato. Il codice che attualmente ho (solo per la chiave A) è il seguente:

if (e.KeyCode == Keys.A) 
{ 
    OLVListItem next = listSession.GetNextItem(listSession.SelectedItem); 
    if (next == null) 
    { 
    return; 
    } 

    listSession.SelectedObject = (Session)next.RowObject; 
    listSession.EnsureModelVisible((Session)next.RowObject); 
} 
+0

ho ottenuto lo stesso problema qui .. e anche, come GetNextItem quando sono stati raggruppati gli elementi .. –

+0

Ci alcuni metodi che fanno riferimento all'indicizzazione degli articoli a seconda dell'ordine di visualizzazione come 'GetNthItemInDisplayOrder()' e 'GetDisplayOrderOfItemIndex()', ma non sono riuscito a trovare una soluzione alternativa funzionante. –

risposta

3

Questo sembra funzionare, ad es. scendete le voci visualizzate:

int index = listSession.GetDisplayOrderOfItemIndex(listSession.SelectedItem.Index); 
OLVListItem next = listSession.GetNthItemInDisplayOrder(index + 1); 

e di salire gli elementi visualizzati:

int index = listSession.GetDisplayOrderOfItemIndex(listSession.SelectedItem.Index); 
OLVListItem next = listSession.GetNthItemInDisplayOrder(index - 1); 
+0

Questo non funzionerà bene per TreeListView perché scendere potrebbe potenzialmente significare saltare fuori dal genitore corrente. Vorrei ottenere un null o -1 indietro se non ci sono più fratelli in quella direzione. –

Problemi correlati