2013-04-24 21 views
6

Moja aplikacja używa klawiszy Q i A do przejścia do następnego elementu w ObjectListView, który działa świetnie, dopóki użytkownik nie sortuje elementów listy za pomocą jednego z nagłówków kolumn . Jeśli użytkownik posortuje, a następnie naciśnięcie klawisza Q/A powoduje, że lista przeskakuje wokół elementów listy, ponieważ wydaje się, że używa oryginalnej kolejności, a nie bieżącej kolejności.Zdobądź następny/poprzedni element w ObjectListView

Poszukuję rozwiązania, które pozwoli użytkownikowi przejść do następnego elementu nawet po posortowaniu użytkownika. Obecnie posiadany kod (tylko dla klucza A):

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

mam ten sam problem .. i tu również, jak GetNextItem gdy pozycje zostały pogrupowane .. –

+0

Nie są niektóre metody odnoszące się do indeksowania artykułów w zależności od kolejności wyświetlania, takie jak 'GetNthItemInDisplayOrder()' i 'GetDisplayOrderOfItemIndex()', ale nie udało mi się wymyślić obejścia. –

Odpowiedz

3

Prawo to wydaje się działać, np. zejść wyświetlanych pozycji:

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

i iść w górę wyświetlanych pozycji:

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

To nie będzie działać dobrze dla TreeListView, ponieważ zejście może potencjalnie oznaczać wyskoczenie z obecnego rodzica. Chciałbym uzyskać zerową wartość lub -1, jeśli nie ma już rodzeństwa w tym kierunku. –

Powiązane problemy