G.edwin
5 Aug 2009, 1:06 AM
Hi, I got a problem in a grid with a formBinding. I want to add a new Item in the grid.
Here my code :
public class ADKFormBinding<M extends ModelData> extends ADKPanel {
...
...
buttonAdd.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
M newM = (M) new BaseModelData();
formBinding.bind(newM);
for(FieldBinding f : formBinding.getBindings()){
if(f.getField().getClass().getName().contains("SimpleComboBox")){
SimpleComboBox<String> comboField = (SimpleComboBox<String>) f.getField();
newM.set(f.getProperty(),comboField.getSimpleValue());
}
else{
newM.set(f.getProperty(),f.getField().getValue());
}
}
gridCellRenderer.addNewElement(newM);
data.add(newM);
grid.getStore().insert(newM, 0);
grid.getView().refresh(false);
}
});
...
}
It works (the new item is displayed)....BUT, when i want to get data from the grid, and launch a getter (ex : myClass.getName()) I have a cast error :
java.lang.ClassCastException: com.extjs.gxt.ui.client.data.BaseModelData
This error only appeared when I use the "add" button before.
I think it's due to this line :
M newM = (M) new BaseModelData();
Do you have an idea to instantiate the M object (like a "M newM = new M();"), in order to have all methods an attribute when i will recover it ?
Thanks a lot !
Here my code :
public class ADKFormBinding<M extends ModelData> extends ADKPanel {
...
...
buttonAdd.addSelectionListener(new SelectionListener<ButtonEvent>() {
@Override
public void componentSelected(ButtonEvent ce) {
M newM = (M) new BaseModelData();
formBinding.bind(newM);
for(FieldBinding f : formBinding.getBindings()){
if(f.getField().getClass().getName().contains("SimpleComboBox")){
SimpleComboBox<String> comboField = (SimpleComboBox<String>) f.getField();
newM.set(f.getProperty(),comboField.getSimpleValue());
}
else{
newM.set(f.getProperty(),f.getField().getValue());
}
}
gridCellRenderer.addNewElement(newM);
data.add(newM);
grid.getStore().insert(newM, 0);
grid.getView().refresh(false);
}
});
...
}
It works (the new item is displayed)....BUT, when i want to get data from the grid, and launch a getter (ex : myClass.getName()) I have a cast error :
java.lang.ClassCastException: com.extjs.gxt.ui.client.data.BaseModelData
This error only appeared when I use the "add" button before.
I think it's due to this line :
M newM = (M) new BaseModelData();
Do you have an idea to instantiate the M object (like a "M newM = new M();"), in order to have all methods an attribute when i will recover it ?
Thanks a lot !