GWT DataGrid/CellTable:在多个页面上选择全部

GWT DataGrid/CellTable:在多个页面上选择全部,gwt,datagrid,pager,celltable,selectionmodel,Gwt,Datagrid,Pager,Celltable,Selectionmodel,我将GWT2.4与DataGrid、SimplePage以及MultiSelectionModel一起使用。我想在所有页面上实现一个简单的全选功能 我只能选择当前页面上所有可见的项目。选择所有页面上所有项目的最佳方式是什么 我知道MultiSelectionModel将ProvidesKey对象提供的代理密钥存储在HashMap中。我想我必须从服务器请求所有代理对象,或者至少请求所有密钥。但实际上,我不想在服务器端存储有关ProvideKey的getKey方法的信息。但我也无法访问MultiSe

我将GWT2.4与DataGrid、SimplePage以及MultiSelectionModel一起使用。我想在所有页面上实现一个简单的全选功能

我只能选择当前页面上所有可见的项目。选择所有页面上所有项目的最佳方式是什么


我知道MultiSelectionModel将ProvidesKey对象提供的代理密钥存储在HashMap中。我想我必须从服务器请求所有代理对象,或者至少请求所有密钥。但实际上,我不想在服务器端存储有关ProvideKey的getKey方法的信息。但我也无法访问MultiSelectionModel所选代理键的HashMap。这一切看起来都很麻烦,那么有没有更好的方法来解决这个问题?

为什么“全选”需要所有键?从列表中选择某些对象时,需要记住选择了哪些对象,但选择所有对象时,需要一个布尔值:

// on click Select All button/checkbox
boolean selectAll = true;
// ask a user what he wants to do
// send a request to server with a parameter selectAll to update/delete all objects
如中所述,实现这一点的一种方法是实现您自己的SelectionModel,例如通过扩展AbstractSelectionModel或DefaultSelectionModel:

复杂的实现可以使用布尔值跨多个页面处理“全选”,以指示所有内容都已选中,然后跟踪负面选择


只有在不延迟加载的情况下,“跨多个页面选择全部”才有效。首先,为什么需要选择“全部”?如果您想对所有网格数据执行某些操作,那么您已经拥有了该列表,并且可以直接对该列表执行操作。尽管如此,您可以通过迭代列表并在每个项目上使用以下API来选择多个页面上的所有网格行

 public void setSelected(T item, boolean selected);

注意:只有在您不延迟加载的情况下,这才有效。

您可以用相关的代码片段更新您的问题吗。现在还不清楚您为什么要处理getKey或ProvideKey。谢谢您的回答。这是我的第一个方法。但是在设置selectAll标志后,我不知道如何在没有合理努力的情况下处理任何进一步的更改。我想我的重点是在实现Chris Lercher的帖子中提到的我自己的SelectionModel时跟踪负面选择。谢谢你的回答。我认为跟踪负面选择是一个好方法。我将尝试实现我自己的选择模型。谢谢你的回答。我需要选择全部,然后从所选集合中删除一些项目。所以我不能直接对整个列表进行操作。