Retour à la ligne dans un champ « multiline » par programmation


Bonjour à tous,

Aujourd’hui je vais parler d’une petite demande que j’ai eue dernièrement : Mettre à jour un champ note en allant à la ligne a chaque entrée.

### Parenthèse de présentation du contexte ###

J’avais un type de contenu d’item sur une liste dont un des champs était utilisé comme champs de « Status » (« Draft », « Pending », etc.. ). Le changement de statut était fait via un workflow.

 Il fallait loguer tous les changements de statuts  et les informations du workflow (qui a approuvé/ rejeté une tache assignée a tel groupe etc..) et que ceux-ci soit visible du premier coup d’œil sur l’élément.

Pour cela j’ai donc utilisé un champ de type « note » sur l’item dans lequel j’ajoutais les informations au fur et à mesure.

J’ai d’abord utilisé le paramètre « AppendOnly » dans ma définition du champ.

Ce paramètre permet lors du remplissage du champ d’avoir le nom de l’utilisateur courant, la date et le texte voulu.

Ca peut servir mais dans mon cas l’affichage des données du Workflow étaient précédé du « System account ».

Ne pouvant updater le log à chaque approbation de taches (l’update générait la fin du Workflow parce que l’élément était modifié), je récupérais l’ensemble des données de la liste Workflow History sur l’event WorkflowCompleted.

Je me suis donc abstenu d’utiliser le « AppendOnly ».

Seulement voilà, je me suis aperçu que lorsque je mettais à jour mon champ, mon texte se mettait a la suite sans retour a la ligne et que le rendu visuel n’était pas terrible. J’ai donc cherché comment simuler un retour à la ligne dans un string.

### Fin de parenthèse de présentation du contexte ###

Etant naïf, j’ai essayé de mettre une balise <br/> dans le string.

Évidemment, cela n’a pas fonctionné.

J’ai fait quelques recherche et je suis tombé sur un article disant qu’il fallait utiliser <![CDATA[<br/>]]> pour générer un retour à la ligne.  Je teste sans succès. Il semblerait que cela fonctionne sur les champs note qui ont du format HTML (il faudra que je teste à l’occasion).

En cherchant un peu plus, je suis tombé sur la bonne solution, à savoir utiliser un System.Environment.NewLine pour générer un retour à la ligne !

En résumé :

  • Paramètre « AppendOnly= ‘True’ » :
    • A chaque modification du champ, ajoute une entrée sous format (User – Date – contenu).
  • Insérer « System.Environment.NewLine » :
    • Ajoute un retour à la ligne dans les champs « note » de type « plain text ».
  • Insérer  <![CDATA[<br/>]]> :
    • Ajoute un retour à la ligne dans les champs « note » de type « Rich text » (à valider).

En espérant que ca aide!

Christopher.

Cet article, publié dans SharePoint 2010, est tagué . Ajoutez ce permalien à vos favoris.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s