即使清除旧选择,CellList也会在刷新新数据后始终记住旧选择

时间:2013-04-29 16:30:35

标签: gwt

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

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

    selectionModel.setSelected(newProxy);
    

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

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

    selectionModel.setSelected(oldProxy, false);
    

    但最后它仍然在步骤1中选择行,这很奇怪。有关于此的任何想法吗?

2 个答案:

答案 0 :(得分:0)

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

您可以在GWT文档中找到示例here

另请参阅:Select element in CellList using SelectionModel or ListDataProvider

答案 1 :(得分:0)

原来是一个已知的GWT issue6310,禁用了KeyboardSelectionPolicy,它就像我一样工作,感谢托马斯的伟大暗示和大卫的链接。