最终的解决方案看起来是这样的:CellEditor的SimpleComboBox <BeanModel>将数据保存到存储
grid.addListener(Events.AfterEdit, new Listener<GridEvent<BeanModel>>() {
@Override
public void handleEvent(GridEvent<BeanModel> be) {
try{
// get column where combo box is, in this case, column 2
if (be.getColIndex == 2) {
BeanModel m = be.getModel();
DataObjectInStore data = be.getBean();
// convert bean model to object if needed before saving to data
ValueObject v = (ValueObject) be.getValue();
data.setComboValue(v);
}
========================= ================================================== =======
我创建了一个CellEditor,它是一个SimpleComboBox对象。它看起来像工作正常,但我似乎错过了一步,当我做grid.getStore().getModels()
并检索数据。从组合框中选择的值不会保存到商店。我如何才能将它妥善保存到商店?
网格本身非常复杂。我会尽力提供一个相同的简化版本。
editor = new CellEditor(comboBox) {
@Override
public Object preProcessValue(Object value) {
if (value == null) {
return null;
}
return comboBox.findModel(null);
}
@Override
public Object postProcessValue(Object value) {
if (value == null) {
return null;
}
SimpleComboBox<BeanModel> bean = (SimpleComboBox<BeanModel>) value;
return bean.getValue().getBean();
}
};
configs.setEditor(editor) // configs = ColumnConfig
cm = new ColumnModel(configs);
grid = new Grid<BeanModel>(cm, store);
网格的商店是一个GridDataObject的BeanModel,其中包含字符串和数据对象等变量。 comboBox
是dataObject的BeanModel的集合。 dataObject的值包含标识数据库中条目的id和stringvalue。
在此先感谢。
如果您发布了一些代码,可能对我们有帮助。最好是一个简短,可编译和展示你的问题(见[sscce.org](http://www.sscce.org)) – Attila