【问题标题】:Nattable loose selection just after loading data加载数据后可轻松选择的松散选择
【发布时间】:2018-04-10 20:02:56
【问题描述】:

我在我的应用程序中几乎所有的表都使用 Nattable。现在有用户报告了关于 Nattable 中的选择的问题。

当我的应用程序加载数据时显示数据,当用户在数据加载后选择一个项目时,它将删除选择。当用户等待几秒钟并再次进行选择时,它会保留。

这是 Nattable 的已知行为吗?对我来说,当第一次选择发生时,数据似乎仍在加载。数据加载为 11K 项,带有多个单元格标签。

【问题讨论】:

    标签: java swt nattable


    【解决方案1】:

    不看细节就很难说。实际上我想知道在数据仍然加载时如何渲染某些东西。但我想你有一些有趣的延迟加载机制来使表格可以快速访问。

    根据我的经验,您描述的行为是由于StructuralChangeEvent 而发生的。一旦数据完全加载,就会触发这样的事件以相应地更新所有层。结构更改用于完全清除,这也意味着使用默认SelectionModel 时的选择。该模型中的选择按行索引存储。但由于结构更改意味着这可能已被更改,因此删除了选择以避免显示之前未选择的内容。

    您可以使用RowSelectionModelPreserveSelectionModel 之类的扩展选择模型,或者您仔细检查StructuralChangeEvent 何时被触发以及是否可以处理。但我认为就您的数据加载机制而言,另一种选择模型应该更有趣。

    【讨论】:

    • 很难向您展示源代码,因为它有很多不同类的代码。在第一方面,看起来确实已经调用了 StructuralChangeEvent。但我找不到它发生的原因。
    • 您可以注册一个 ILayerEventHandler,在其中放置一个断点并检查堆栈跟踪。
    • Tnx 确实帮助我找到了问题。当我刷新表格时,我创建了 freezeColumns 并对表格进行了刷新。但是 freezeColumns 已经 FreezeSelectionCommand 并且这看起来像自动刷新表格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2010-09-13
    • 2012-01-25
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    相关资源
    最近更新 更多