2010-07-14 5 views
2

Je souhaite utiliser l'objet TreeGrid de SmartGWT pour afficher des données hiérarchiques. Les données sont hétérogènes, tous les éléments ne sont pas du même type et ont les mêmes champs. Par exemple, j'ai les données suivantes:Comment utiliser SmartGWT DataSource avec des données hétérogènes

Home 
|-Room 1 
|-Room 2 
    |-Table 
    |-Chair 

Tous les objets ont des ID uniques. La maison n'a pas de champs. Les chambres ont juste un nom. La table a un nom et un champ int "seatsNumberOfPeople" que le président n'a pas. Chaise a un champ "Couleur" tiré d'une liste de valeurs possibles que la table n'a pas.

Lorsqu'un objet dans le TreeGrid est sélectionné, je veux montrer un DetailViewer qui permet à l'utilisateur d'éditer les champs de cet objet. De toute évidence, le DetailViewer aura différents champs et validations pour chaque type de nœud.

Comment la DataSource doit-elle être conçue pour répondre à ces exigences? Quelle est la meilleure pratique pour créer un tel DetailViewer dynamique à partir de ces données hétérogènes?

Malheureusement, tous les exemples sur le web montrent des données qui sont homogènes (mêmes champs pour tous les objets de l'arbre).

Répondre

0

Dans ce cas, je voudrais créer une source de données qui a deux champs supplémentaires, ID externe et type externe. Supposons que vous utilisiez la clé primaire comme ID externe et le nom de la source de données comme type. Lorsque vous sélectionnez un nœud d'arbre, vous transmettez l'ID et le type à votre visualiseur de détail. Il appelle getDataSource (type) et fetch ({criteria id = ID}), puis restitue vos détails. (bien sûr c'est le code de psuedo)

Questions connexes