0

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

我们遇到以下问题:

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

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

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

请提出一些建议或替代解决方法。

感谢您的回答。

4

1 回答 1

2

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

于 2013-02-19T12:32:07.070 回答