GWT DataGrid/CellTable:选择多个页面
Posted
技术标签:
【中文标题】GWT DataGrid/CellTable:选择多个页面【英文标题】:GWT DataGrid/CellTable: Select all over multiple pages 【发布时间】:2012-12-04 12:57:44 【问题描述】:我正在使用带有DataGrid
和SimplePager
以及MultiSelectionModel
的GWT 2.4。我想在 all 页面上实现一个简单的 select-all 功能。
我只能选择当前页面上的所有可见项目。选择所有页面上的所有项目的最佳方法是什么?
我知道MultiSelectionModel
将ProvidesKey
对象提供的代理密钥存储在HashMap
中。我想我必须从服务器请求所有代理对象或至少所有 keys。但实际上我不想在服务器端存储有关 ProvidesKey
´s getKey()
-method 的信息。但我也无法访问所选代理密钥的MultiSelectionModel
´s HashMap
。这一切看起来都很麻烦,那么有没有更好的方法来解决这个问题?
【问题讨论】:
你能用相关代码sn-ps更新你的问题吗?目前尚不清楚您为什么要尝试处理 getKey 或 ProvidesKey。 【参考方案1】:如https://developers.google.com/web-toolkit/doc/latest/DevGuideUiCellWidgets#selection 中所述,实现此目的的一种方法是实现您自己的 SelectionModel(例如,通过扩展 AbstractSelectionModel 或 DefaultSelectionModel):
一个复杂的实现可以处理跨多个页面的“全选”,使用一个布尔值来指示所有内容都被选中,然后跟踪否定选择。
【讨论】:
感谢您的回答。我认为跟踪负面选择是一个好方法。我会尝试实现我自己的SelectionModel
。【参考方案2】:
为什么全选需要所有键?当您从列表中选择 一些 个对象时,您需要记住选择了哪些对象,但是当您选择 所有 个对象时,您需要一个布尔值:
// 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
【讨论】:
感谢您的回答。那是我的第一个方法。但是在设置了 selectAll 标志之后,我不知道如何在没有合理努力的情况下处理任何进一步的更改。我认为我的重点是在实施我自己的SelectionModel
时跟踪否定选择,如 Chris Lercher 的帖子中所述。【参考方案3】:
仅当您不延迟加载时,才能跨多个页面选择所有内容。首先,为什么需要全选?如果您想对所有网格数据执行一些操作,您将拥有该列表,您可以直接在列表上执行您的操作。尽管如此,您可以通过遍历列表并在每个项目上使用以下 API 来选择多个页面上网格的所有行。
public void setSelected(T item, boolean selected);
注意: 这仅在您不延迟加载时有效。
【讨论】:
感谢您的回答。之后我需要全选并从选定的集合中删除一些项目。所以我不能直接对整个列表进行操作。以上是关于GWT DataGrid/CellTable:选择多个页面的主要内容,如果未能解决你的问题,请参考以下文章
在 EditorGridPanel (gwt-ext) 中单击时选择文本
GWT CellTable 选择并单击 CheckBoxCell