Solution sans code : affichant les jours depuis la dernière modification apportée à un élément de liste SharePoint

Solution sans code : affichant les jours depuis la dernière modification apportée à un élément de liste SharePoint

Important :  Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

20/9/2011 3:01 PM

par David Joyce, LANtek

Remarque : Cet article fait partie d’un ensemble de billets de quatre ans du blog obtenir le Point pour l’utilisateur final SharePoint.

Vue d’ensemble : Personnalisé chronologiques rapports sans code

Un des composants fonctionnels souvent demandées d’un site SharePoint est une balance âgée pour les tâches ou éléments de liste. En d’autres termes, le nombre de jours/mois il a été depuis la dernière modification de cet élément de liste ?

Sur la surface cela pourrait être une demande de très simple. Une fois tous les, nous avons dates pour les éléments en cours de création et de modification, nous avons la possibilité de stocker des dates personnalisées lorsque certaines modifications apportées aux éléments ont lieu via les récepteurs d’événements. Nous avons calculé colonnes où nous pouvons inclure des formules de type Excel avec nos informations. Cela vous semble qu’une proposition assez directe. Nous sélectionnez un champ de date, créer une colonne calculée et effectuez une formule quelque chose dans les lignes de [DateField] : [Aujourd'hui]. Nous constatons pas la rapidement via ! Comme toute personne qui a tenté de cette tâche « simple » sait, essayez d’utiliser s’intitule [Aujourd'hui] dans une colonne calculée entraîne des problèmes. Essayez d’insérer [Aujourd'hui] dans votre calculé zone formule de la colonne vous donne un message d’erreur comme celui-ci :

Message d’erreur

Pourquoi est-ce ? Également, elle doit faire avec le mode de calcul colonnes sont calculées.

Prenons une formule simple par exemple :

= IF ( [Colonne1] < = [Colonne2], « OK », « Pas OK »)

Tout cela indique est que si Colonne1 est inférieure ou égale à celle de Colonne2, puis affichez OK, dans le cas contraire afficher pas OK. Il s’agit d’une formule simple assez typique pour une colonne calculée et rend une hypothèse de base sur l’élément de liste qui contient ces colonnes : les valeurs de Colonne1 et Colonne2 ne pourront jamais modifier sans un événement de mise à jour sur l’élément de liste.

C’est vrai, des colonnes calculées recalcule uniquement lorsque la liste est mis à jour (ou créée) dans la mesure où ils supposent que les informations que vous calculez sont contenues dans l’élément lui-même. Cela crée un problème lorsque vous essayez d’utiliser un élément qui change indépendamment des champs de l’élément, telles que date du jour la.

Maintenant que je n’était pas dans la réunion où ils décidé qu’il s’agit de la manière dont le calcul colonnes fonctionne, cependant, si je dois obtenues que je lui affecte automatiquement qu’ils fonctionnent de cette manière pour les performances. Imaginons que si vous avez une liste de plusieurs milliers éléments, chacun d'entre eux contenu d’une colonne calculée qui nécessaire une mise à jour « live ». Cela signifierait que que certains mécanisme, par exemple un travail du minuteur, c’est parcourir chaque élément qui contenait cette colonne calculée régulièrement et mettre à jour de sa valeur. Car des déploiements plus importants cette tâche peut en permanence en cours d’exécution et modifier des choses, cela pourrait extrêmement imposer en termes de performances. Qui est simplement mon estimation, mais il est peu utile si vous pensez à ce sujet.

Voici quelques suggestions pour les solutions similaires flottant des qui impliquent ruses SharePoint dans à accepter une valeur aujourd'hui en créant d’abord une colonne nommée aujourd'hui, puis ajoutez-le à votre formule, puis supprimer. Ils sont bien, mais n’oubliez pas ce que j’ai dit sur la mise à jour des colonnes calculées. Cette valeur changent uniquement lorsque l’élément est mis à jour ce qui signifie que vos valeurs seront bientôt incorrects, particulièrement dans le cas d’un calcul jour.

J’ai vu d’autres personnes à l’aide de JavaScript intelligent pour écrire les valeurs à la page. Cette méthode fonctionne également, mais je ne suis quasiment parviennent contre script client lorsqu’il peut être évitée.

Mise en œuvre :

Que faire ? Colonnes calculées absences la question pour les fonctions intitulées « volatiles » comme aujourd'hui. Il est possible que nous avons pu développer un code personnalisé pour prendre en charge de cette pour que nous puissions comme une colonne calculée, le travail du minuteur, ou planifié processus contribué et mettre à jour de chaque élément unique qui a besoin de ce calcul apporté. Qui nous ramène au problème de performance mentionné dans le dernier paragraphe via, et plus il est une solution fragile qui peuvent être très spécifique pour la site / / colonne de liste en question. En haut de ces deux questions, vous devez également rechercher un expert nerdy, par exemple moi-même, qui sait de code et lui pour développer cette solution pour vous inciter. Mais il existe une façon plus facile !

Si vous disposez des droits pour créer des champs et modifier des pages sur votre site et que peu de connaissances sur la création d’affichages et XSLT, vous pouvez intégrer un modèle XSL qui peut être inclus dans un affichage de liste et fidèlement calcule la valeur de votre chaque fois que la page est demandée. Ce scénario supprime notre souci des performances et ne nécessite pas de code personnalisé à être développé et déployé via une solution.

Qui vous convient. Comment nous le faire ?

  1. Créer ou sélectionner le champ qui servira de notre source. Il doit être un type de date.

  2. Créer notre champ qui servira à un espace réservé pour la valeur calculée.

  3. Ajoutez les deux de ces champs à un type de contenu et ajouter ce type de contenu à une liste.

  4. Créer un affichage de la liste contenant les colonnes source et de l’espace réservé.

  5. Télécharger le modèle XSL à la bibliothèque de Styles.

  6. Définissez la propriété « Lien XSL » pour le composant WebPart Affichage de liste via l’interface utilisateur.

  7. Réussite !

Nous allons explorer un exemple de cas d’utilisation et passez en revue la mise en œuvre. Nos clients voulu une vue de leur liste principale serait leur indiquent la durée pendant laquelle un élément de liste particulier avait été assis à son statut. Cette liste contenait un contenu type dérivé du type d’élément et ajouté à la liste de site personnalisé. Il a été déjà un récepteur d’événements en place qui capture chaque fois que ce champ État de l’élément de liste a été modifié et enregistré cette date dans une colonne nommée « Date état changé ». Tout ce câblage n’est pas obligatoire et peuvent être exécuté en n’importe quel champ date (cela comme par hasard est notre implémentation mais hésitez pas à essayer). Au minimum que vous devez est votre champ date source et un champ d’espace réservé pour contenir votre calcul (plus d’informations sur ce problème dans le paragraphe suivant) ajoutés à votre liste, bien que je vous conseille de qu'utiliser des colonnes de site et les types de contenu de site au cas où vous souhaitez réutiliser cette solution dans d’autres emplacements sur votre site.

Nous avons fait notre date source que nous pouvons utiliser dans notre calcul par rapport à date du jour la. Maintenant, nous pouvons créer une colonne de site personnalisée à utiliser comme un conteneur de notre valeur calculée. Dans ce cas, j’ai choisi d’utiliser une colonne calculée dans la mesure où il ne sera pas en mesure d’être modifiée pour le nouveau ou modifier les formulaires d’élément, mais pouvant être sélectionné pour l’affichage dans les vues étant donné que nous ne souhaitez que les utilisateurs de la saisie de valeurs arbitraires dans cette colonne. Il peut être difficile en ce qui concerne la raison pour laquelle il n’est pas affiché dans les affichages, etc..

Maintenant que nous avons notre colonne de site, nous pouvons l’ajouter à nos types de contenu qui seront utilisés dans notre liste. Ensuite, nous avons besoin de créer notre vue qui sera plus tard personnalisée avec notre XSLT. Vérifiez que vous créez un affichage standard qui contient votre colonne de date source et votre nouvelle colonne calculée qui servira à un espace réservé pour la valeur calculée.

Nous avons maintenant tout en place qui nous aurons besoin pour prendre en charge notre balance âgée personnalisé. Tous les reste consiste à créer notre modèle XSL, téléchargeant dans la bibliothèque de site Style et la liaison à notre affichage de liste. Le modèle XSL que nous utiliserons va contiennent certains balisage générés par SharePoint normal pour générer la vue, ainsi que notre propre balisage personnalisé permet de remplacer certaines parties du présent et calculer notre valeur souhaitée pour nous.

Donnant crédit Remerciements, les modèles XSL pour faire les calculs réels que j’utilise pour cette solution simple fournis par « swirch » sur les forums MSDN :
http://social.msdn.microsoft.com/Forums/en-US/sharepointcustomization/thread/aeda905b-9bc6-40c4-bd22-21306c5cb0d2/

Télécharger la feuille de style XSL (aging.zip) que j’ai inséré ensemble situé ici :
https://OneDrive.live.com/?cid=c262e8e2d59a86d9&permissionsChanged=1&id=C262E8E2D59A86D9 ! 104

L’ouverture de ce vers le haut dans votre éditeur de texte vous verrez beaucoup de balisage SharePoint XSL normal pour le rendu des vues, si vous faire défiler vers le bas jusqu'à la ligne 357 vous verrez le début des modèles personnalisés que j’ai ajouté à la marque de révision, la première partie en cours le modèle « DateDiff » suivi par « calculer Julien-jours » et « FieldRef_printTableCell_EcbAllowed.Days_x0020_At_x0020_Status ». Il s’agit de nos trois modèles qui doit effectuer notre calculs s’affichent dans notre vues. Si vous vous apprêtez à être à l’aide de noms de champs autre que spécifié plus haut dans cet article, vous devez passez en revue ces modèles et remplacez toutes les références aux autres noms. N’oubliez pas, pour cela que vous souhaiterez utiliser le nom du champ pas le nom d’affichage interne.

Une fois que vous jugez que le modèle est prêt à accéder, accédez à votre bibliothèque de styles et télécharger sous le dossier « Feuilles de Style XSL » puis copier vers le bas le lien vers le fichier. Cela permet de facilement y apporter des modifications plus tard, ou ajoutez-le à différentes parties du site, comme nous, veuillez.

Ensuite, accédez à votre liste et sélectionnez l’affichage que vous avez créée précédemment dans cet article. Dans le « Actions du Site » menu cliquez sur « Modifier la Page ».

Commande Modifier la page du menu Actions du site

Recherchez votre composant WebPart Affichage de liste dans la page et ouvrez le menu composant WebPart en cliquant sur la petite flèche vers le bas en regard dans le coin supérieur droit. À partir de ce menu Sélectionnez « Modifier le composant WebPart ».

Commande Modifier le composant WebPart dans le menu WebPart

Menu du composant WebPart sur le côté droit de la fenêtre du navigateur s’ouvre.

Menu Composant WebPart

Cliquez sur + pour le « divers » section, recherchez la propriété « Lien XSL ».

Propriété Lien XSL du menu Composant WebPart

Collez le lien vers votre fichier XSL dans votre bibliothèque de Styles que vous avez copié vers le bas (Cela peut être un lien relatif ou absolu).

Lien vers un fichier XLS collé

Cliquez sur « OK » pour enregistrer vos modifications, puis cliquez sur le bouton « Arrêter la modification » dans le ruban « Page » en haut de la page.

Bouton Arrêter la modification sous l’onglet Page

Si tout a été correctement configuré, vous devez maintenant voir numéros dans votre colonne « Jours avec l’état ».

Colonne Jours avec l’état affichant un nombre

Et Voici Enfin, qu’il serait comme partie tester des données de différentes dates :

Balance âgée affichant des données de test

Résumé :

Il existe : mis en forme de façon optimisée, robuste et plus performant permet de créer une balance âgée dans SharePoint, terminer avec une mise en œuvre sans code simple. Cela a tout à fait quelques applications potentielles en dehors de l’option utiliser la casse que nous exploré ici. Un autre scénario courant pour ce type de rapport est attachant à une liste de tâches afin que vous puissiez voir combien de temps écoulé depuis la création d’une tâche en un clin de œil.

Profitez !

--David

David Joyce, LANtek

Commentaires

Procédure manquants
10/8/2012 3:51 AM
OK, j’ai suivi les étapes, mais doivent être manqué quelque chose - comment le XSL sauront la date à appliquer, ou du champ dans lequel ajouter les jours depuis dans ? contacts lors de la procédure est ignorée.

Sans Code accepté !
8/30/2012 12:12 PM
J’accepte : j’ai ne pensez pas que cette fonction compte vraiment comme « sans code ».
Intéressant, via certaines screwup de SharePoint, j’ai une colonne calculée de travail à l’aide d’aujourd'hui... vous ne savez pas comment ou pourquoi parce que je ne parviens pas à obtenir qu’il fasse à nouveau, mais celui est toujours présente et qu’il fonctionne.

Formule pour « Jours au statut » colonne calculée ?
5/2/2012 7:39 AM
David - quelle est la formule que vous avez utilisé pour votre colonne de site calculée « Jours avec l’état » (colonne espace réservé) ? Il était « = aujourd'hui » ?

SharePoint 2007
2/12/2011 11:29 AM
actuellement que je n'ai pas essayé d’appliquer cette solution vers SharePoint 2007, alors que je cherche à celui-ci. Malheureusement, il n’existe aucune propriété XslLink exposée sur le composant WebPart via l’interface utilisateur.

Billet de rédaction
30/11/2011 9:53 AM
Bonjour,
excellent billet.
J’utilise SharePoint 2007.
je n’ai pas une section divers comme indiqué ci-dessus.
Avoir étapes pour une configuration SP2007 ?
Vous remercions.

RE : Solution sans code : affichant les jours depuis un élément de liste SharePoint a été modifié
11/10/2011 8:24 AM
Chris haute.
rechercher excellent !
i vais prenez connaissance des que vous avez validé espérons-le, une version ultérieure sur aujourd'hui et voyez si i peut rendre cette solution un peu plus fiable.
suivis donc Content que vous avez aimé le billet, et donc très Content vous ont été en mesure de trouver une solution pour le format de date européenne suivis. :)
-David

Solution pour les Formats de Date européenne
11/10/2011 6:45 PST
Bonjour à nouveau David,
à titre d’info, j’ai trouvé une solution pour le problème que je mentionné précédemment dans cette page ;
https://sharepointbydummies.wordpress.com/2011/07/13/possible-work-around-to-date-format-issue-sharepoint-2010/

Formats de Date européenne
7/10/2011 3:59 AM
David Bonjour,
il s’agit d’un Merci vraiment bonne solution et exactement le type d’élément que j’ai passé les deux derniers jours recherchez ! Toutefois j’ai un peu d’un problème et j’ai espoir que peuvent m’aider.
Que j’ai modifié votre code légèrement à calcultate le nombre de jours jusqu'à ce qu’un problème survient, plutôt que dans la mesure où, en changeant les variables dans la dernière ligne de la fonction « DateDiff » ;

< xsl : value-de l’instruction select = « $JulianToday - $JulianStartDate » >< / xsl : value-de >

cependant je suis uniquement en mesure d’accéder à caclulate la différence correctement la moitié de l’heure. Par exemple avec cette date (format JJ/MM/AAAA) ;

30/12/2011

il calcule correctement, mais avec cette date (même mise en forme)

10/12/2011

il calcule comme étant if si 10-déc-2011 plutôt que de 12-Oct-2011.
J’essaie de simplement en changeant les positions des valeurs jour et du mois dans la variable « JulianStartDate », comme suit ;

< xsl : avec paramètre nom = "Mois" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033, « AAAAMMJJ »), 7, 2) » / >
< xsl : nom avec paramètre = select="substring(ddwrt:FormatDateTime(string($StartDate) « Jour », 1033, « AAAAMMJJ »), 5, 2) » / >

et cela résolu le problème avec la deuxième date, mais il est incorrect pour la première date !
Que j’ai également tenté de modifier les appels FormatDateTime à utiliser LCID européenne et les modifications différentes au dernier paramètre FormatDateTime (par exemple, jjmmaaaa, MMJJAAAA) avec les réglages appropriés pour les paramètres de positionnement sous-chaîne sans succès.
Serait considérablement les bienvenus tout avis, vous pouvez proposer.
Merci,
Chris

Sans Code
21/9/2011 4:27 AM
je ne pensez pas que XSL correspond à une solution « sans code », comme comprendre le langage XSL n’est pas pour tout le monde - mais elle n’implique pas programmation. En outre : solution piles, nous vous remercions !

Remarque : Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoignez le programme Office Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×