GET - 单击cellTable中文本列的处理程序

时间:2011-10-23 17:12:51

标签: gwt gwt-2.2-celltable

有没有办法将clickHandler添加到GWT中cellTable中的列?

我没有看到TextColumn文档中的任何选项。

我的要求就是这样 - 我必须在单元格表中显示5列数据,其中一列必须要触发onClick事件。但我发现无法在textColumn中添加clickhandler。

如果这应该是在普通的html中完成的话,我不会花5秒钟来编写代码 -

1 个答案:

答案 0 :(得分:0)

编写您的自定义单元格(这是我根据GWT ActionCell编写的示例):

public abstract class ActionTextCell<C> extends AbstractCell<C> {

  public static interface Delegate<T> {
    void execute(T object);
  }

  private final Delegate<C> delegate;

  public ActionTextCell(Delegate<C> delegate) {
    super("click", "keydown");
    this.delegate = delegate;
  }

  @Override
  protected void onEnterKeyDown(Context context, Element parent, C value, NativeEvent event,
      ValueUpdater<C> valueUpdater) {
    delegate.execute(value);
  }

  @Override
  public void onBrowserEvent(Context context, Element parent, C value, NativeEvent event, ValueUpdater<C> valueUpdater) {
    super.onBrowserEvent(context, parent, value, event, valueUpdater);
    if ("click".equals(event.getType())) {
      onEnterKeyDown(context, parent, value, event, valueUpdater);
    }
  }

  @Override
  public void render(Context context, C value, SafeHtmlBuilder sb) {
    sb.append(new SafeHtmlBuilder().appendHtmlConstant("<span>" + render(value) + "</span>")
      .toSafeHtml());
  }

  public abstract String render(C value);

}

并在添加到IndentityColumn的{​​{1}}内使用它:

CellTable