Hello,
I use GWT 2.2 and SGWT 2.4.
I have a custom TreeGrid (PatientTree), a custom DataSource (ClinicalDS) and a custom TreeNode (CliniCalNode).
I want to load on datasource children of a node when I open parent node/folder. Everything is ok on the first level of nodes. I open the parent, children are loaded !
But when I want to open newly created children, a cast exception occurs:
Here are my classes :
some screenshots :
- 1.png => first level loaded by ds.initialize() => OK
- 2.png => second level loaded by ds.addchild() => OK
- 3.png => I log the toString() of the node => first line : click on Patient1 OK, second line click on Prel1 KO
thanks ;)
Pierre
I use GWT 2.2 and SGWT 2.4.
I have a custom TreeGrid (PatientTree), a custom DataSource (ClinicalDS) and a custom TreeNode (CliniCalNode).
I want to load on datasource children of a node when I open parent node/folder. Everything is ok on the first level of nodes. I open the parent, children are loaded !
But when I want to open newly created children, a cast exception occurs:
Code:
java.lang.ClassCastException: com.smartgwt.client.widgets.tree.[B]TreeNode cannot be cast to[/B] org.ub.le2i.[B]ClinicalNode [/B]
Code:
class [B]PatientTree [/B] extends TreeGrid{
ClinicalDS ds;
public [B]PatientTree[/B](){
ds = new ClinicalDS();
ds.initialize();
this.setDataSource(ds);
[B]addFolderOpenedHandler[/B](new FolderOpenedHandler() {
public void onFolderOpened(FolderOpenedEvent event) {
ClinicalNode node = (ClinicalNode) event.getNode(); // CAST EXCEPTION
ds.[B]addChildren[/B](node);
}
});
}
}
Code:
class [B]ClinicalDS[/B] extends DataSource{
public void [B]initialize[/B](){
// load patients from database : List<Patient> patients;
for (Patient patient : patients){
[B]ClinicalNode [/B]child = new [B]ClinicalNode[/B](patient);
addData(child);
}
}
public void [B]addChildren[/B](ClinicalNode parent){
// load samples from database : List<Sample> samples;
for (Sample sample: samples){
[B]ClinicalNode [/B]child = new [B]ClinicalNode[/B](sample);
child.setParent(parent);
addData(child);
}
}
}
Code:
class [B]ClinicalNode[/B] extends TreeNode{
private Object object;
public ClinicalNode([B]Patient [/B]patient){
// setAttributes, etc.
object = patient; // this is why I need a custom TreeNode
}
public ClinicalNode([B]Sample [/B]sample){
// setAttributes, etc.
object = sample;
}
}
- 1.png => first level loaded by ds.initialize() => OK
- 2.png => second level loaded by ds.addchild() => OK
- 3.png => I log the toString() of the node => first line : click on Patient1 OK, second line click on Prel1 KO
thanks ;)
Pierre
Comment