CellEditor SimpleComboBox <beanmodel>将数据保存到存储</beanmodel>

时间:2012-05-18 12:03:18

标签: java user-interface gxt

最终解决方案看起来像这样:

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,其中包含字符串和dataObject等变量。 comboBox是dataObject的BeanModel的集合。 dataObject具有包含标识数据库中条目的id和stringvalue的值。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我遇到的问题是当下拉菜单完成编辑时,它没有正确读取值,因为它是beanmodel中的一个对象,所以我不得不添加一个gridevent监听器,每次完成编辑时都要检查在那时设置正确的值。