2013-04-05 3 views
0

Je suis en train de faire une table modifiable en utilisant SWT, alors que j'ai du mal à sauver les dates qui sont modifiées dans la base de données en utilisant TopLink:problèmes SWT avec l'enregistrement des données dans la base de données

if (referenceViewId.equalsIgnoreCase(TISTableViewPart.ID)) { 
     //TODO YUCHEN : Register and save objects in db 
     System.out.println("test"); 

     final IViewPart viewPart = workbenchPage.findView(TISTableViewPart.ID); 
     final TISTableViewPart vdv = (TISTableViewPart) viewPart; 

     WorkingUnitMasterDataImpl sessionUow = new WorkingUnitMasterDataImpl(); 


     Object test = vdv.getLocalComposite().getTableViewer().getElementAt(1); 
     sessionUow.registerObject(test); 

     try { 
      sessionUow.commitAndResume(); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

} 

Par en utilisant

Object test = vdv.getLocalComposite().getTableViewer().getElementAt(1); 

je ne peux obtenir l'objet de la première colomne de la table, puis-je utiliser

sessionUow.registerObject(test); 

pour enregistrer le changement. Est-ce que quelqu'un a l'idée d'obtenir la table entière en tant qu'objet pour s'inscrire et valider? Merci d'avance.

Répondre

1

Si vous utilisez un TableViewer correctement configuré avec ContentProvider, il est supposé que ContentProvider contient tous les éléments que contient la table. Essayez d'accéder à ces éléments via la méthode getElements() au cas où le fournisseur de contenu implémenterait IStructuredContentProvider.

Object[] elements = tableViever.getContentProvider().getElements(); 

Si vous souhaitez vous inscrire à l'objet des modifications, vous pouvez le faire dans la méthode setInput() de la ContentProvider. En effet, le javadoc pour l'interface IContentProvider suggère cette méthode comme l'endroit pour s'inscrire aux changements.

Si vous avez besoin d'accéder à l'entrée à un certain moment, l'objet TableViewer vous donne accès à votre entrée de table par la méthode getInput():

Object tableInput = tableViewer.getInput(); 

Bonne chance!

+0

J'ai essayé vos méthodes, mais je n'ai pas trouvé Object [] elements = tableViever.getContentProvider(). GetElements(); – user1643305

Questions connexes