SmartGWT - mise à Jour dynamiquement ListGridRecord

Je suis en utilisant SmartGWT et j'ai un ListGrid rempli avec un tableau de ListGridRecords à l'aide de la setData() de l'appel. Je suis en train de mettre à jour un progrès de la propriété d'un seul enregistrement (sur une minuterie pour les tests) et l'ont mise à jour dans le navigateur. J'ai essayé différentes combinaisons de draw(), redraw(), markForRedraw (), etc. en vain.

J'ai aussi essayé de substitution de la updateRecordComponent() la méthode dans ma classe de la table, mais il ne s'appelle quand les dossiers sont d'abord créées (après createRecordComponent()).

Je dois souligner que je ne veux PAS d'accomplir par la liaison à une source de données. Je veux juste être en mesure de mettre à jour l'attribut sur le côté client.

ArrayList<SegmentSortRecord> mRecords;
mRecords.add(new SegmentSortRecord("03312010_M001_S004"));
mRecords.add(new SegmentSortRecord("03312010_M001_S005"));
mRecords.add(new SegmentSortRecord("03312010_M001_S006"));
mRecords.add(new SegmentSortRecord("03312010_M001_S007"));

SegmentSortRecord[] records = new SegmentSortRecord[mRecords.size()];
mRecords.toArray(records);

mSortProgressTable.setData(records);

.
.
.

mTestTimer = new Timer()
{
   public void run()
   {
      mTestPercent += 5;

      if (mTestPercent <= 100)
      {
         mSortProgressTable.getRecord(2).setAttribute(Constants.PROGRESS_COL_NAME, mTestPercent);
         //mSortProgressTable.markForRedraw();
         //mSortProgressTable.redraw();
      }
      else
      {
         mTestPercent = 0;
      }
   }
};

...

@Override
protected Canvas createRecordComponent(final ListGridRecord aRecord, Integer aColumn)
{
   String fieldName = getFieldName(aColumn);      

   //Want to override the behavior for rendering the "progress" field
   if (fieldName.equals(Constants.PROGRESS_COL_NAME))
   {  
      Progressbar bar = new Progressbar();
      bar.setBreadth(10);
      bar.setLength(100);

      //The JavaScript record object contains attributes that we can
      //access via 'getAttribute' functions.
      bar.setPercentDone(aRecord.getAttributeAsInt(Constants.PROGRESS_COL_NAME));

      return bar;
   }

Merci d'avance pour toute aide.

  • Les bonnes réponses. J'ai en fait trouvé une autre façon d'aller à ce sujet ainsi. Dans le createRecordComponent méthode que j'ai donner à l'enregistrement d'un attribut qui est la Progressbar objet retourné. Progressbar bar = new Progressbar(); annales.setAttribute(Constantes.PROGRESS_COL_NAME+"_object", bar); return bar; je peux simplement requête de l'objet et de le modifier comme d'habitude: Object o = getAttributeAsObject(Constantes.PROGRESS_COL_NAME+"_object"); if (s != null && o instanceof Progressbar) { return (Progressbar)o; }
  • pourriez-vous poster votre commentaire est une réponse? Il est plus facile à lire de cette façon (et j'ai même voteraient en haut).