Le curseur se déplace vers le haut lors de l'actualisation de la liste de la grille de page

Collègues développeurs,
J'ai une liste personnalisée de la page, où un utilisateur peut sélectionner quelques enregistrements, d'appuyer sur un bouton dans le volet Action qui s'exécute à une certaine logique dans une classe, et tout ce qui fonctionne très bien. Mon problème est que le curseur ne pas rester dans le même registre, mais va vers le haut de la grille. Sonne comme un familier de la question?

- Je stocker les FormDataSource de la liste de page utilisant des arguments dans la classe personnalisée qui a de la logique.

J'ai essayé quelques petites choses mais aucune n'a fonctionné.

  1. formDataSource.recherche(vrai)
    Vrai paramètre est censé conserver la position après la recherche fait son travail. Je suppose que cela aurait été la solution la plus simple. Page de la liste des requêtes a 2 sources de données joint à l'aide d'une jointure Externe et ma conjecture est la recherche de la(vraie) ne fonctionne qu'avec des jointures internes.
  2. formDatasource.setPosition(position)

    int position;
    position = formDatasource.getPosition();

    formDatasource.recherche();

    formDatasource.setPosition(position);

    Je stocker la position à l'aide de getPosition et de le mettre de nouveau à l'aide de setPosition. Aucune utilisation.

  3. formDataSource.trouverenregistrement()

    currentRecord = formDatasource.curseur();

    recId = currentRecord.RecId;
    formDatasource.relire();

    formDatasource.recherche();
    formDatasource.trouverenregistrement(currentRecord);

    - je utiliser la ds.curseur() pour obtenir l'enregistrement en cours et passer à trouverenregistrement() après recherche(). Aucune utilisation.

  4. formDataSource.findValue()

    currentRecord = formDatasource.curseur();

    recId = currentRecord.RecId;
    formDatasource.relire();

    formDatasource.recherche();
    formDatasource.findValue(fieldNum(Tableau, RecId), int642str(recId));

    - je utiliser la ds.curseur() pour obtenir l'enregistrement en cours et recId et de le passer à findValue() après recherche(). Aucune utilisation.

J'ai débogué le code ci-dessus et le curseur() méthode ne permet d'obtenir l'enregistrement en cours et de ses recId.
J'ai commencé à croire qu'il pourrait être une limitation de la liste de la page, et en priant pour que quelqu'un prouve que j'ai tort.

Toute aide est appréciée.

Pouvez-vous également tenter par l'aide de la tâche de macro et d'appeler le #taskF5 pour actualiser le formulaire. Il en résulte même que de cliquer sur le bouton actualiser sur les pages de liste. vous pouvez consulter msdn.microsoft.com/en-us/library/hh812104.aspx pour plus de détails.
'recherche' a un paramètre optionnel pour conserver la position dans la grille. Pour une excellente vue d'ensemble, voir kashperuk.blogspot.com.es/2010/03/...

OriginalL'auteur Harry | 2013-07-17