2

当我想编辑一个 textinputcell 时,我通常需要单击两次:第一次单击将焦点放在单元格上,然后放在输入上。

我有一个包含 20 列的单元格表,全部为 textinputcell - excel 样式。而这个问题使它完全无法使用。

这是一个代码示例:

FieldUpdater<MyBean, String> fieldUpdater = new FieldUpdater<MyBean, String>() {
  @Override
  public void update(int index, MyBean object, String value) {
    object.setValue(value);
  }
};

Column<MyBean, String> column = new Column<MyBean, String>(new TextInputCell()) {
  @Override
  public String getValue(MyBean object) {
    return objet.getValue();
  }
};

column.setFieldUpdater(fieldUpdater);
table.addColumn(column, "Col");

你必须面对这个问题吗?有知道的解决方案吗?

谢谢

4

3 回答 3

2

将 的 设置KeyboardSelectionPolicyCellTable( DISABLEDie cellTable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.DISABLED);)。

在 Firefox/Chrome 上使用 GWT 2.5 对我有用。

请参阅https://code.google.com/p/google-web-toolkit/issues/detail?id=7706其他详细信息。

于 2015-07-30T02:25:22.043 回答
-1

好的,这就是我所做的:我注意到 EditTextCell 不需要单击两次即可更改焦点

所以我复制了这个类(一切都是私有的:/),我在方法render中做了以下更改:

前 :

if (viewData != null) {
  String text = viewData.getText();
  if (viewData.isEditing()) {
    /*
     * Do not use the renderer in edit mode because the value of a text
     * input element is always treated as text. SafeHtml isn't valid in the
     * context of the value attribute.
     */
    sb.append(template.input(text));
  } else {
    // The user pressed enter, but view data still exists.
    sb.append(renderer.render(text));
  }
} else if (value != null) {
  sb.append(renderer.render(value));
}

后 :

    if (viewData != null) {
        String text = viewData.getText();
        sb.append(template.input(text));
    }
    else if (value != null) {
        sb.append(template.input(value));
    }

我只使用模板而不使用渲染器

奖励:由于您使用的是自己的单元格副本,因此您可以编辑模板。我添加了一个宽度(构造函数 arg):

interface Template extends SafeHtmlTemplates {
    @Template("<input type=\"text\" value=\"{0}\" style=\"width:{1}px\" tabindex=\"-1\"></input>")
    SafeHtml input(String value, String width);
}

我这样称呼模板:sb.append(template.input(text, width));

希望有帮助:)

于 2012-10-16T14:15:51.660 回答
-1

检查网格的 selectionModel 是否已设置在单元格上而不是行上。它可能会解决您的问题。

于 2013-10-11T14:26:57.443 回答