GXT EditorGrid提供了一种为列设置编辑器类型的机制。
无论如何都要逐个单元地定义编辑器类型吗?
对于好奇的人:
我需要创建一个转置表;列成为行,行是列。在这种情况下,列(从正常表的角度来看)将具有各种编辑器类型,其中一行将具有相同的编辑器类型。
答案 0 :(得分:2)
基本上,你必须处理BeforeEdit事件并设置编辑器。这是一个可以实现网格的基类:
public abstract class AnyEditorGrid<T extends ModelData> extends EditorGrid<T> {
public AnyEditorGrid(final ListStore<T> listStore, final ColumnModel columnModel) {
super(listStore, columnModel);
addListener(Events.BeforeEdit, new Listener<GridEvent<T>>() {
@Override
public void handleEvent(final GridEvent<T> be) {
final CellEditor editor = getEditor(be.getRowIndex(), be.getColIndex(), be.getModel());
if (editor != null) {
getColumnModel().setEditor(be.getColIndex(), editor);
} else {
be.setCancelled(true);
}
}
});
}
protected abstract CellEditor getEditor(int rowIndex, int colIndex, T model);
}