我正在使用GWT
a EditTextCell
,它在点击时进入编辑模式。有人知道通过程序代码强制框进入编辑模式的方法吗?
我必须以某种方式ClickEvent
向那个盒子开火吗?或者如何做到这一点?
您可以将以下方法添加到您的 CellTable 或 DataGrid:
public void focus(final int row, final int column) {
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
getRowElement(row).getCells().getItem(column).getFirstChildElement().getFirstChildElement().focus();
}
});
}
.focus(row, column)
然后,当您需要将焦点设置在给定单元格上时,您可以简单地调用。
或者您可以.getRowElement()...
直接调用,但我建议将其包装在 ScheduledCommand 中,这样它就不会过早触发 - 在单元格准备好接受焦点之前。
事实证明,我可以在我的单元格上触发原生点击事件,如下所示:
NativeEvent nativeevent = Document.get().createClickEvent(1, 0, 0, 0, 0, false, false, false, false);
cell.getElement().dispatchEvent(nativeevent);
您还可以编写render
事件或添加clickHandler
用于设置contentEditable=true
或false
。
private class CustomEditCell extends EditTextCell {
public void render(com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb) {
sb.appendHtmlConstant("<div contentEditable='true' unselectable='true' >"+value+"</div>");
}
}