mardi 30 septembre 2008

Filtrer un champ recherche dans Sharepoint

Une problématique simple :
Vous avez un champ recherche dans une liste.
Vous voulez, lorsque vous ajoutez ou mettez à jour un élément de cette liste, pouvoir filtrer ce champ recherche (par exemple en n'affichant que des personnes ayant un statut particulier dans la liste liée).

Plusieurs méthodes :
  1. Filtered Lookup Lists in SharePoint : dont le principal inconvénient est d'avoir à mettre les mains dans le javascript à chaque fois, mais ça marche.

  2. Les champs calculés :
    avantage > simple et standard,
    inconvénient > solution incomplète, ne gère pas les mises à jours et suppression, vous êtes donc obligé de complèter avec un custom field (cf. point suivant)

    Allons-y avec un exemple :
    1. vous avez une Liste "Personnes" avec un champ "Statut" (liste de choix, ex : "OK", "PAS OK").
    2. Vous avez une seconde liste "Affectation" avec un champ recherche qui pointe vers votre liste "Personnes". A ce stade, toutes les personnes seront affichées dans votre champ recherche sans distinction de statut.
    3. Vous voulez que ne figure que les personnes ayant le statut "OK". Ajoutez un champ Valeur calculée (calcul basé sur d'autres colonnes) dans votre liste "Personnes" avec la formule =SI(Statut="OK";Titre;"") . En un mot, si le statut de l'élément en cours est "OK", la valeur de ce champ calculé sera le titre de l'élément, sinon il est vide.
    4. Dans votre liste affectation, modifiez votre champ recherche pour qu'il pointe vers votre nouveau champ calculé. Ainsi, quand vous créez une affectation, n'apparaisse dans votre liste de personne que ceux ayant le statut "OK". La moitié du chemin est fait, il faut ensuite compléter avec un custom field qui se chargera de la prise en charge des changements (et oui! si vous modifiez par la suite le statut des personnes )

  3. Un custom Field :
    avantage > fait ce que vous voulez, comme vous voulez.
    inconvénient > compliqué
    Les colonnes personnelles (custom field) avec Sharepoint - Club d'entraide des développeurs francophones
    Développer une colonne lookup personnelle avec de l'AJAX - Club d'entraide des développeurs francophones
    Custom Field Types

6 commentaires:

thilde a dit…

Servant de "béta-testeuse" sur Sharepoint pour l'ensemble de mon service, avec pour mission : 0 dev / 100% paramétrage, je commençais sérieusement à douter de cette possibilité.

Merci pour cette aide précieuse :)

mdelpeix a dit…

les nouveautés annoncées pour la version 2010 de Sharepoint semblent pallier quelques lacunes ce côté...
ravi d'avoir été utile ;)

thilde a dit…

C'est gentil merci.
Mais notre version est arrêtée pour le moment, donc il faut faire avec.

Bonne année :)

Christophe Chopin a dit…

BOnjour,

Merci pour ces conseils. J,ai sensiblement le meme probleme et j'aimerais votre analyse.


Une liste de taches A contient des taches assignées a différentes personnes.
Une liste B permet de saisir le temps passé sur une tache. Pour saisir son temps, il est nécessaire de choisir une tache issue de la liste A (colonne de recherche branchée sur la liste A). Mais la droplist affiche toutes les taches de tout le monde de la liste A. Comment faire pour que la drop list dans la liste B n'affiche que les taches assignées à l'utilisateur actif ?

Merci pour votre aide.
Christophe.

Christophe Chopin a dit…

en complément de mon commentaire au-dessus. On fait une liste B car on a jamais trouvé un outil permettant de saisir le temps passé sur une tache SharePoint dans Sharepoint. Avez-vous connaissance d'un tel outil ?

Merci

mdelpeix a dit…

je me suis écarté de Sharepoint ces derniers temps, mais dans mes souvenirs je pense qu'une utilisation avancée de Sharepoint Designer doit pouvoir répondre à votre besoin. Et regarder aussi du côté des lookupfield filtrés dans Google