在 nattable 中动态更改列和数据模型的正确方法是什么?

What is the correct way to dynamically change columns and data model in nattable?

当改变natTable的列数和行数时 清空DataProvider的列列表后,新建一个列项,更改columnPropertyAccessor的列项列表。 然后,将新的数据模型放入过滤器列表中并刷新。

当7列的nattable被排序(升序或降序)并点击时,它变成了与上面不同的数据模型(4列),但如果排序, "CurrentModificationException" 和 "IndezxOutOfBoundException" 发生。 如果不排序就交换数据模型,没有问题。 不知道是哪个部分引起的。

我在更改数据模型时替换过滤器列表的方法是否错误? 如果有谁遇到过类似的错误并且已经解决了,请帮忙

好吧,你没有展示你是如何做事的,所以我不能说任何细节。但是回答你的问题,是的,我认为你做错了。

简而言之,如果您根据排序或过滤等列应用了状态,并且您更改了底层数据结构,那么事情就会崩溃,因为状态不再与结构匹配。不确定为什么您认为这应该自动运行。

如果您更改底层数据结构,您需要提前清除基于结构的状态。

NatTable 示例应用程序中有一个示例展示了如何动态更改数据提供者。不确定该示例是否涵盖了状态的清除,或者当您正确执行操作时是否会自动处理。