我在一起使用DataGrid
与ListDataProvider
显示在我的应用程序不同的行数据。在大多数情况下,这是罚款,一次取一切从服务器。现在,它似乎有必要对分页的步骤获取数据。这意味着,我的RPC调用返回每次和可能的结果总数10个项目。
总计数由具有设置行数据后手动调用SimplePager
用于设置连接datagrid.setRowCount(totalCount, true)
。是经过这里很重要,因为setRowData也触发与项目的具体数量(对我来说总是10)一个setRowCount电话。
的问题是,在已经设置的行人工计数,另一参与者,一个ScheduledCommand
触发flushCommand
这反过来触发setRowCount
呼叫设定所述计数回10.后果:寻呼机显示10 1-10和寻呼机的控制被禁用。
我怎么能执行一个特定rowCount时,即使ListDataProvider
只有每次10个项目?
你可能会建议使用AsyncDataProvider
。然而,已经有其通过ListDataProviders支持的相当复杂的普通设计(AbstractTablePresenter<DTO, ...>
实现所有逻辑来获取数据并将其推到一个通用的显示器)。很难解释,但实际上,我宁愿继续使用ListDataProvider
。
对于我的用例中,最简单的解决是继承我的点播情况下AbstractTablePresenter
和使用带来我需要的所有功能的AsyncDataProvider
。该伤害关于我的设计比预期的(在我的肩上敲;-))少重。
试图继承ListDataProvider
第一,但数据之间的关系,rowCount时,rowCountEvents和附加寻呼机对象是如此歧管,你最终会覆盖大部分ListDataProvider
的方法和您的寻呼机实现。