我们的应用程序是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中建议的解决方案。然而它没有用。
请提出一些建议或替代工作。
感谢您的回答。
答案 0 :(得分:2)
作为处理大表的解决方法,我建议你看一下Nattable项目http://www.eclipse.org/nattable/。它支持您需要的一切(排序,过滤,树形结构元素,延迟加载等)。我们成功地在我们的项目中使用它,在那里有必要将数十万个元素显示为具有大约160列的树。它还具有一些非常酷的样式功能,可以使您的桌面更加用户友好和互动。希望这有帮助