2010-02-03 15 views
2

Nous utilisons la bibliothèque SmartClient GWT (voir le Smartclient GWT showcase here). J'essaie de créer une interface utilisateur ListGrid que lorsque vous cliquez sur un enregistrement, les champs deviennent modifiables. Tout comme l'exemple:Smartclient GWT rendant un champ ListGridRecord modifiable à l'aide d'une DataSource personnalisée

La différence est que je utilise mes propres services RPC GWT personnalisés et en ajoutant manuellement ListGridRecord de mon propre DataSource, et je vois mes enregistrements apparaissent, mais les champs aren 'editable quand on clique dessus. J'ai créé un DataSource personnalisé en utilisant le GWTRPCDataSource implementation et remplacez correctement la méthode executeFetch.

Y a-t-il un traitement spécial en cours utilisant les exemples XML DataSource qui crée ListGridRecords qui l'a correctement configuré pour être modifiable? Par exemple, j'utilise le fichier CountryXMLDS.java comme l'exemple, sauf que j'ajoute un enregistrement personnalisé (et que j'ai supprimé tous les champs sauf le champ de population que je souhaite modifier). Je vois que mon enregistrement apparaît mais le champ n'est PAS éditable quand l'enregistrement est cliqué.

ListGridField populationField = new ListGridField("population", "population"); 
    populationField.setType(ListGridFieldType.INTEGER); 
    populationField.setCanEdit(true); 

    countryGrid.setFields(populationField); 

    countryGrid.setCanEdit(true); 
    countryGrid.setEditEvent(ListGridEditEvent.CLICK); 


    ListGridRecord record = new ListGridRecord(); 
    record.setAttribute("population", "5"); 
    CountryXmlDS.getInstance().addData(record); 
+0

il semble fonctionner normalement sur ma machine, pouvez-vous fournir plus de détails sur votre countryGrid s'il vous plaît? quelle version de smartgwt utilisez-vous? PopulationField.setCanEdit (true) n'est pas obligatoire. – rochb

Répondre

1

Quel que soit le problème, ce n'est pas dans les détails que vous avez partagés. Essayez ces étapes:

  1. assurez-vous que vous appelez setDataSource() sur le ListGrid avec votre DataSource

  2. assurez-vous que le nom de votre champ ListGrid correspond à un champ de la DataSource. Cela est sensible à la casse

  3. Assurez-vous que vous avez une primaryKey déclarée dans le DataSource. Il n'y a aucun moyen d'enregistrer les modifications, sauf si il y a un moyen d'identifier les enregistrements

  4. chercher des messages dans la console développeur

    http://forums.smartclient.com/showthread.php?t=8159#aConsole

  5. fusil de chasse: passer outre ListGrid.canEditCell() et retour tout ce que vous voulez - cela remplace tous les paramètres déclaratifs tels que field.canEdit.

+0

La définition de primaryKey semblait être le problème. – Dougnukem