我正在使用带有DataGrid
和SimplePager
的GWT 2.4以及MultiSelectionModel
。我想在所有页面上实现一个简单的 select-all 特征。
我只能选择当前页面上的所有可见项目。选择所有页面上所有项目的最佳方法是什么?
我知道MultiSelectionModel
将ProvidesKey
对象提供的代理密钥存储在HashMap
中。我想我必须从服务器或至少所有键请求所有代理对象。但实际上我不想在服务器端存储有关ProvidesKey
的{{1}} - 方法的信息。但我也无法访问所选代理密钥的getKey()
MultiSelectionModel
。这一切看起来都很麻烦,那么有更好的解决方法吗?
答案 0 :(得分: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
答案 1 :(得分:0)
如https://developers.google.com/web-toolkit/doc/latest/DevGuideUiCellWidgets#selection中所述,实现此目的的一种方法是实现自己的SelectionModel(例如,通过扩展AbstractSelectionModel或DefaultSelectionModel):
复杂的实现可以使用布尔值处理多个页面中的“全选”以指示所有内容都已选中,然后跟踪否定选择。
答案 2 :(得分:0)
只有在不延迟加载时,才能在多个页面中选择所有内容。首先,为什么需要选择全部?如果要对所有网格数据执行某些操作,则您已经拥有该列表,并且可以直接在列表上执行操作。尽管如此,您可以通过迭代列表并在每个项目上使用以下API来选择多个页面上的网格的所有行。
public void setSelected(T item, boolean selected);
注意: 仅当您不延迟加载时才会有效。