首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT -CellList的SelectionChangeEvent意外发射

GWT -CellList的SelectionChangeEvent意外发射
EN

Stack Overflow用户
提问于 2013-12-23 12:00:09
回答 1查看 153关注 0票数 0

我有两个按钮"Next element“和"Previous”,还有一些包含CellList的定制小部件。在单击按钮时,我调用我的小部件的方法,该方法通过调用CellList中的SelectionModel来改变它的选择:

代码语言:javascript
复制
selectionModel.setSelected(value, true);

当我刷新CellList的内容时,按钮工作得很好,但是当我单击它在列表中选择元素时,就会发生这种行为:例如,列表上有元素{0,1,2,3,4,.}。我单击元素1,然后按两次"Next element“按钮。这些SelectionChangeEvent发生在:

  1. 更改从1 -> 2中选择的内容(按第一个按钮)
  2. 2 -> 3(第二版)
  3. 3个-> 1

但是在第2步之后,如果我按下“前一步”,它将正确返回到元素1。因此,我用鼠标单击的元素不会让选择超过1步。

我不知道第三件事是从哪里来的。我唯一的猜测是手动选择事件在触发后会继续挂起,但我不知道如何检查它。有人知道这个问题的原因吗?

upd:

我发现,通过单击事件,选择继续挂在EventBus的某处:当我更改搜索筛选器时,我访问SelectionModel的方式与单击按钮和将选择设置为第一个元素的方式相同。但是,如果用户在发生相同的事情之前单击CellList :第一,选择更改为0,第二,如果新的数据选择包含该元素,则返回到以前选择的数据。

upd (麻省理工学院的问题):

代码语言:javascript
复制
nextButton.addClickHandler(new ClickHandler() {
  @Override
  public void onClick(ClickEvent event) {
      /* Omitting checks that there are elements on the list,
         some element is selected and isn't last */
      T value = dataProvider.getList().get(currentIndex() + 1);
      singleSelectionModel.setSelected(value, true);
      singleSelectionModel.isSelected(value);
      Element rowElement = cellList.getRowElement(index);
      rowElement.scrollIntoView();
  }
}

upd:发现了导致这个问题的原因: http://code.google.com/p/google-web-toolkit/issues/detail?id=6310

EN

回答 1

Stack Overflow用户

发布于 2013-12-23 12:14:24

您似乎需要使用HandlerRegistration。因此,不调用多个单击事件。

请参阅:

GWT Handler登记

相关链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20743094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档