Virtual TableViewer排序会导致选择问题

时间:2013-02-19 12:11:32

标签: eclipse-plugin swt eclipse-rcp jface tableviewer

我们的应用程序是RCP应用程序,需要显示数千个项目的表。出于这个原因,我们在SWT.VIRTUAL中使用了TableViewer。除了选择之外,这很有效。

我们遇到以下问题:

  • 我们的TableViewer支持排序和过滤。当我们使用虚拟tableviewer时,更改选择不会保留当前所选项目,而是保留当前选定的行。这会导致选择另一个项目。 例如:如果用户选择了存在于第5行的项目'A'并且执行了排序,则在排序后,第5行的项目被选中而不是项目'A'。 使用非虚拟TableViewer,一切正常。

我们尝试进入调试,发现AbstractTableViewer.VirtualManager类的缓存似乎与模型保持同步。 强制在AbstractTableViewer.virtualSetSelectionToWidget()中使用缓存可能是一种可能的方法。

我们已尝试实施https://bugs.eclipse.org/bugs/show_bug.cgi?id=338696中建议的解决方案。然而它没有用。

请提出一些建议或替代工作。

感谢您的回答。

1 个答案:

答案 0 :(得分:2)

作为处理大表的解决方法,我建议你看一下Nattable项目http://www.eclipse.org/nattable/。它支持您需要的一切(排序,过滤,树形结构元素,延迟加载等)。我们成功地在我们的项目中使用它,在那里有必要将数十万个元素显示为具有大约160列的树。它还具有一些非常酷的样式功能,可以使您的桌面更加用户友好和互动。希望这有帮助