GWT の cellTable の列に clickHandler を追加する方法はありますか??
TextColumn のドキュメントにはオプションがありません。
私の要件はこのようになります-セルテーブルに5列のデータを表示する必要があり、列の1つにonClickイベントが発生する必要があります。しかし、textColumn にクリックハンドラを追加する方法が見つかりませんでした。
これが通常のhtmlで行われることになっていた場合、コードを書くのに5秒もかかりません-
GWT の cellTable の列に clickHandler を追加する方法はありますか??
TextColumn のドキュメントにはオプションがありません。
私の要件はこのようになります-セルテーブルに5列のデータを表示する必要があり、列の1つに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);