2009-05-17 6 views
1

Je dois exiger qu'un SPList soit trié par le champ "Priority" (champ numérique, sans limites) lorsqu'un ListItem est ajouté ou mis à jour.Comment trier automatiquement les SPListItems en fonction d'un champ

Le genre devrait fonctionner comme ceci:

Original  Inserted item   Modified 
    1          1 
    2    2      2 
    3          3 (old 2) 
              4 (old 3) 

Modifié: Ce comportement est essentiel pour améliorer l'expérience utilisateur lors de la modification des données dans la vue de la feuille de données. C'est une sorte de mans pauvres mises à jour de style AJAX que j'essaie d'obtenir. La seule solution que je vois actuellement est d'utiliser un gestionnaire d'événements et de mettre à jour les ListItems qui devraient être privatisés, mais cela pourrait être une opération assez coûteuse sur une liste avec des centaines d'éléments (à moins qu'il y ait des trous dans la séquence) . Est-ce que j'ai manqué la solution évidente, ou une manière bien meilleure de mise à l'échelle?

tia

+0

Il est maintenant en production, et la performance est ok jusqu'à environ 200 articles dans la liste. – Kasper

Répondre

1

Wow, un dur. Je n'aime pas l'idée de revenir en arrière et de faire des mises à jour des éléments existants d'un EventReceiver. Vous demandez des ennuis.

Voici ma recommandation.

Utilisez 2 zones pour votre tri.

1 le champ priorty tel que vous l'avez aujourd'hui (donc quelqu'un dit 1, 2, 3, 4) ... 2 le champ date de création (il s'agit d'un champ de date/heure intégré).

afin que vos résultats ressemblerait à quelque chose comme ça

1 1/1/2009
2 5/16/2009
2 5/11/2009
3 5/12/2009

+0

JD, j'aime ton idée mais ça ne résout pas le problème, du moins maintenant tout de suite. Si je ne peux pas faire l'algoritm «mettre à jour tous les éléments en conflit», je pourrais utiliser votre suggestion comme solution temporaire, puis mettre à jour les éléments async plus tard – Kasper

+0

Kasper Vous devriez consulter le modèle de réunion SharePoint 2007. Il a une liste pour soutenir l'ordre du jour qui fait quelque chose de similaire. – Jeff

Questions connexes