无论如何,是否可以逐个单元地定义编辑器类型GXT 3.0?
我需要创建一个转置表;列变成行,行变成列。在这种情况下,一列(从普通表的角度来看)将具有不同的编辑器类型,而行将具有相同的编辑器类型。
我正在尝试使用以下方法 - 它似乎工作正常,并允许根据数据类型打开编辑器,但是当我单击时;它不会关闭/隐藏编辑器。
如果有人能指出我正确的方向,我将非常感激。
final GridInlineEditing<MyModel> editing = new GridInlineEditing<MyModel>(mygrid){
@SuppressWarnings("unchecked")
@Override public <O> Field<O> getEditor(ColumnConfig<MyModel, ?> columnConfig) {
if(valueColumnName.equals(columnConfig.getHeader().asString())) {
MyModel myModel = tree.getSelectionModel().getSelectedItem();
if(MyModelType.STRING.equals(myModel.getMyModelType())) {
TextField textField = new TextField();
textField.setAllowBlank(Boolean.FALSE);
return (Field<O>) textField;
}
else {
TextArea textField = new TextArea();
textField.setAllowBlank(Boolean.FALSE);
return (Field<O>) textField;
}
}
return super.getEditor(columnConfig);
}
};
editing.setClicksToEdit(ClicksToEdit.TWO);
附:
这与下面的问题类似;但答案特定于 GXT 3.0 后。我是 stackoverflow 的新手,似乎建议是创建新问题,而不是向旧线程添加新帖子。GXT EditorGrid:逐个单元选择单元格编辑器类型 https://stackoverflow.com/questions/6973189/gxt-editorgrid-choose-cell-editor-type-on-a-cell-by-cell-basis
玩了一整天之后;我的同事(Praveen)和我想通了。因此,不要尝试重写 GridInlineEditing 的 getEditor() 方法,而是重写 startEditing() 方法。另外,如果您有日期、列表等数据,您将需要转换器。下面是示例代码;希望这对其他人有帮助。
final GridInlineEditing<MyModel> editing = new GridInlineEditing<MyModel>(tree){
@Override public void startEditing(GridCell cell) {
MyModel myModel= tree.getSelectionModel().getSelectedItem();
if(MyModelType.TEXT.equals(myModel.getContextVariableType())) {
TextArea textField = new TextArea();
textField.setAllowBlank(Boolean.FALSE);
super.addEditor(valueColumn, textField);
}
else if(MyModelType.BOOLEAN.equals(myModel.getContextVariableType())) {
SimpleComboBox<String> simpleComboBox = new SimpleComboBox<String>(new StringLabelProvider<String>());
simpleComboBox.setTriggerAction(TriggerAction.ALL);
simpleComboBox.add("YES");
simpleComboBox.add("NO");
super.addEditor(valueColumn, simpleComboBox);
}
else if(MyModel.INTEGER.equals(myModel.getContextVariableType())) {
SpinnerField<Integer> spinnerField = new SpinnerField<Integer>(new IntegerPropertyEditor());
spinnerField.setIncrement(1);
Converter<String, Integer> converter = new Converter<String, Integer>(){
@Override public String convertFieldValue(Integer object) {
String value = "";
if(object != null) {
value = object.toString();
}
return value;
}
@Override public Integer convertModelValue(String object) {
Integer value = 0;
if(object != null && object.trim().length() > 0) {
value = Integer.parseInt(object);
}
return value;
}
};
super.addEditor(valueColumn, converter, (Field)spinnerField);
}
else {
TextField textField = new TextField();
textField.setAllowBlank(Boolean.FALSE);
super.addEditor(valueColumn, textField);
}
super.startEditing(cell);
}
};
editing.setClicksToEdit(ClicksToEdit.TWO);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)