我目前正在使用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行,并且展开箭头上的点击不会改变任何事情。
答案 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);
希望这可以帮到你。