1

DataGrid我正在使用带有 a和 a 的GWT 2.4SimplePager以及MultiSelectionModel. 我想在所有页面上实现一个简单的全选功能。

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

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

4

3 回答 3

0

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

// 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
于 2012-12-04T17:35:55.313 回答
0

https://developers.google.com/web-toolkit/doc/latest/DevGuideUiCellWidgets#selection中所述,实现此目的的一种方法是实现您自己的 SelectionModel(例如,通过扩展 AbstractSelectionModel 或 DefaultSelectionModel):

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

于 2012-12-04T18:33:18.360 回答
0

仅当您延迟加载时,才能跨多个页面选择所有内容。首先为什么要全选?如果您想对所有网格数据执行一些操作,您将拥有列表,您可以直接在列表上执行您的操作。尽管如此,您可以通过遍历列表并在每个项目上使用以下 API 来选择多个页面上的所有网格行。

 public void setSelected(T item, boolean selected);

注意: 这仅在您延迟加载时才有效。

于 2012-12-05T06:10:52.120 回答