1

我有一个带有 SingleSelectionModel 的 CellList,我的用例是:

  1. 用户在 CellList 中选择一行(oldProxy)。
  2. 用户创建一个代理(newProxy)并发送到服务器。
  3. 客户端收到成功响应,CellList 开始向服务器请求最新数据。
  4. CellList 填充了最新的数据,并且步骤 1 中的行仍然被选中。

但我想在第 4 步中选择最新的行,我使用

selectionModel.setSelected(newProxy);

但似乎它不起作用,仍然选择步骤 1 中的行。

我尝试在第 2 步之前取消选择该行:

selectionModel.setSelected(oldProxy, false);

但最后它仍然选择了 step1 中的行,这很奇怪。有什么想法吗?

4

2 回答 2

0

确保将密钥提供程序(接口ProvidesKey)传递给SingleSelectionModel构造函数。如果您不使用密钥提供程序,它可能会equals()在您的代理上使用它来尝试查找匹配项,但由于您已从服务器请求新实例,旧实例将不会匹配任何新实例。

您可以在GWT 文档中找到一个示例。

另请参阅:使用 SelectionModel 或 ListDataProvider 选择 CellList 中的元素

于 2013-04-29T16:53:44.137 回答
0

原来是一个已知的GWT 问题 6310,禁用 KeyboardSelectionPolicy 并且它只是像我一样正常工作,感谢 Thomas 的出色提示和 David 的链接。

于 2013-05-02T06:24:09.897 回答