gpt4 book ai didi

GXT 3.x 编辑网格 : choose cell editor type on a cell by cell basis

转载 作者:行者123 更新时间:2023-12-03 05:25:31 28 4
gpt4 key购买 nike

是否可以在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);
PS:这与下面的问题类似;但答案特定于 GXT 3.0 后。我是 stackoverflow 的新手,似乎建议是创建新问题,而不是向旧线程添加新帖子。 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);

关于GXT 3.x 编辑网格 : choose cell editor type on a cell by cell basis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16070953/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com