未显示GXT 3 GridRowEditing SimpleComboBox条目

时间:2015-01-09 17:31:09

标签: gwt combobox gxt

我目前正在使用GXT3网格显示来自自定义对象EntityDAO的数据。 该类包含3个属性:一个id和两个对复杂类型对象的引用 我们打电话给他们

Long id;
UserInfo userInfo;     
OutputInfo outputInfo; 

我创建了一个界面来显示这些信息的所需显示:

interface EntityDAOProperties extends PropertyAccess<EntityDAO> {
    ModelKeyProvider<EntityDAO> id();
    @Path("userInfo.name")
    ValueProvider<EntityDAO, String> step();
    @Path("outputInfo.name")
    ValueProvider<EntityDAO, String> outputInfo();
}

显示效果非常好。问题是我希望能够在我的网格中添加/编辑行。

为此,我有一个

GridRowEditing<EntityDAO> editing = createGridEditing(grid);

包含

SimpleComboBox<String> comboUser = new SimpleComboBox<String>(new LabelProvider<String>() {
    @Override
    public String getLabel(String item) {
        return item;
    }
});

for(...){
    comboUser.add("entry " + i); // For instance
    logger.info("entry : " +i); // For instance
    i++;
}
comboUser.setEditable(false);
comboUser.setTriggerAction(TriggerAction.ALL);

当我双击我的行并显示GridRowEditing时,组合似乎没有超过1行,并且展开箭头上的点击不会改变任何事情。

1 个答案:

答案 0 :(得分:0)

我想你错过了为组合框设置属性编辑器的部分,这里是示例代码:

  SimpleComboBox<Light> combo = new SimpleComboBox<Light>(new StringLabelProvider<Light>());
  combo.setClearValueOnParseError(false);
  combo.setPropertyEditor(new PropertyEditor<Light>() {

    @Override
    public Light parse(CharSequence text) throws ParseException {
      return Light.parseString(text.toString());
    }

    @Override
    public String render(Light object) {
      return object == null ? Light.SUNNY.toString() : object.toString();
    }
  });
  combo.setTriggerAction(TriggerAction.ALL);
  combo.add(Light.SUNNY);
  combo.add(Light.MOSTLYSUNNY);
  combo.add(Light.SUNORSHADE);
  combo.add(Light.MOSTLYSHADY);
  combo.add(Light.SHADE);
  // combo.setForceSelection(true);
  editing.addEditor(cc2, new Converter<String, Light>() {

    @Override
    public String convertFieldValue(Light object) {
      return object == null ? "" : object.toString();
    }

    @Override
    public Light convertModelValue(String object) {
      try {
        return Light.parseString(object);
      } catch (ParseException e) {
        return null;
      }

    }

  }, combo);

希望这可以帮到你。