在cellTable中TextColumn上的Clickhandler



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

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

我的要求是这样的-我必须在一个单元格表中显示5列数据,其中一列必须有一个onClick事件被触发。但是我发现没有办法添加一个点击处理程序到textColumn。

如果这应该是在常规的HTML中完成的,它不会花我5秒钟来编写代码-

编写您的自定义单元格(这里是我基于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中使用,并将其添加到CellTable中:
final ActionTextCell<MyClass> cell = new ActionTextCell<MyClass>(new ActionTextCell.Delegate<MyClass>() {
      @Override
      public void execute(MyClass c) {
        // do something with c
      }
    }) {
      @Override
      public String render(MyClass c) {
        // return a string representation of c
      }
    };
final IdentityColumn<MyClass> column = new IdentityColumn<MyClass>(cell);

相关内容

  • 没有找到相关文章