获取ObjectListView中的下一个/上一个项目

我的应用程序使用Q和A键移动到ObjectListView中的下一个项目,只要用户不使用某个列标题对列表项目进行排序,该功能就会很好。 如果用户已排序,则按Q / A键会导致列表在列表项目周围跳转,因为它似乎使用原始顺序,而不是当前顺序。

所以我正在寻找一种解决方案,即使在用户排序之后,用户也可以移动到下一个项目。 我现在的代码(仅适用于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);
}

正确的这似乎工作,例如下去显示的项目:

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

并上显示的项目:

int index = listSession.GetDisplayOrderOfItemIndex(listSession.SelectedItem.Index);
OLVListItem next = listSession.GetNthItemInDisplayOrder(index - 1);
链接地址: http://www.djcxy.com/p/71201.html

上一篇: Get next/previous item in an ObjectListView

下一篇: Getting the stack trace of an error in ExtendScript