GWT DataGrid/CellTable:选择多个页面

Posted

技术标签:

【中文标题】GWT DataGrid/CellTable:选择多个页面【英文标题】:GWT DataGrid/CellTable: Select all over multiple pages 【发布时间】:2012-12-04 12:57:44 【问题描述】:

我正在使用带有DataGridSimplePager 以及MultiSelectionModel 的GWT 2.4。我想在 all 页面上实现一个简单的 select-all 功能。

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

我知道MultiSelectionModelProvidesKey 对象提供的代理密钥存储在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 CellList 点击切换选择(多选)

GWT CellTable 选择并单击 CheckBoxCell

具有复选框选择和行单击事件的 GWT CellTable

GWT CellTable 以编程方式选择 CheckBoxCell

GWT FileUpload OnClick