0

最終的な解決策は次のようになりました。

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);
}

================================================== ================================

SimpleComboBox オブジェクトである CellEditor を作成しました。正常に動作しているように見え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);

グリッドのストアは、文字列や dataObject などの変数を持つ GridDataObject の BeanModel です。dataObjectのcomboBoxBeanModel のコレクションです。dataObject には、データベース内のエントリを識別する ID と stringvalue を含む値があります。

前もって感謝します。

4

1 に答える 1

0

私が抱えていた問題は、ドロップダウンの編集が終了したときに、それが beanmodel 内のオブジェクトであったため、値を正しく読み取っていないことでした。そのため、編集が終了するたびにチェックして正しい値を設定する gridevent リスナーを追加する必要がありました。その時の価値。

于 2012-05-19T13:07:27.827 に答える