4

我正在使用 GWT 展示示例中的自定义数据网格.. http://gwt.googleusercontent.com/samples/Showcase/Showcase.html#!CwCustomDataGrid

每件事都运行良好..我在单元格表的行中有子行..

我有锚细胞..它们在主行和子行中..

ClickHandler行的工作但不在子行中..

这是我的那个单元格的代码

// ViewDetail.
td = row.startTD();
td.className(cellStyles);
td.style().trustedColor("blue");
td.style().cursor(Cursor.POINTER);

if (isNetworkRow) {
  //td.text("subRowsAnchor");
} else {

}
renderCell(td, createContext(19), viewDetailsColumn, rowValue);

在这两种情况下,我都在渲染单元格,无论是一行还是子行,所以我可以看到锚点,它的 clickHandler 也可以工作..

有什么方法可以区分单击了哪个锚点,主行或子行。

我只是试着做一个小工作。即更改锚文本的名称,如果它是一个子行..就像你可以在我的代码中一样.. td.text..

但是然后在renderCell上得到错误...

附加 HTML 或添加子元素后无法添加属性。

任何想法,可能是什么解决方案...

谢谢

4

1 回答 1

1

要区分单击了哪一行(根据展示示例,但通常应该相同),只需依赖选择了哪一行(前提是您没有覆盖/禁用选择处理)。

为列设置 a FieldUpdater(使用您的锚单元格呈现自身)并使用 . 检查子行选择getKeyboardSelectedSubRow()。就像是:

yourColumn.setFieldUpdater(new FieldUpdater<T, String>() {
  public void update(int index, T object, String value) {
    if (yourGrid.getKeyboardSelectedRow() != -1 ) {
      if (yourGrid.getKeyboardSelectedSubRow() > 0) {
        // Subrow selected.
      } else {
        // Main row selected.
      }
    }
  }
});
于 2013-05-13T11:03:14.940 回答