Voyez les documents SmartClient suivants :

Tree DataBinding

class RestDataSource extends DataSource

Dont le retour XML d'un "fetch" est du genre :

<response>
    <status>0</status>
    <data>
      <record>
          <field1>value</field1>
          <field2>value</field2>
      </record>
      <record>
          <field1>value</field1>
          <field2>value</field2>
      </record>
    </data>
 </response>

Et pour un arbre :

<response>
    <status>0</status>
    <data>
      <record>
          <itemId>15</itemId>
          <parentId>12</parentId>
      </record>
      <record>
          <itemId>16</itemId>
          <parentId>12</parentId>
      </record>
    </data>
 </response>

Dans leur forum, des posts sont utiles :

TreeNode isLeaf with RestDataSource

Le XML retourné par la RestDataSource peut inclure la balise "isFolder" pour indiquer que le le record est un nœud "leaf" et ne contient aucun fils :

<record>
<isFolder>false</isFolder>
...
</record>

XML not getting loaded in TreeGrid

Dans cette page, une solution complète (client et serveur) de chargement d'arbre grille dynamique via un flux XML.

On notera que l'erreur à ne pas commettre est de définir la clé externe sur le fils à la place du père :

parentIdField.setForeignKey("id")

Ressources

TreeGrid, autre qu'en SmartGwt