2009-07-07 6 views
4

J'ai une colonne calculée dans une liste SharePoint personnalisée 2007, avec la formule suivante:SharePoint: les valeurs de colonnes calculées disparaissent lors de la modification d'un élément de liste. Des idées?

=CONCATENATE("IR-",[ID],"-",LEFT(UPPER([Title]),25)) 

Si un élément est créé dans la liste, tout va bien, cependant, lorsqu'un élément est mis à jour le [ID] La colonne n'est plus dans la colonne calculée pour cet article. Donc, à la création: "IR-40-TheTitleIsHere", mais après édition, c'est "IR - TheTitleIsHere".

Quelqu'un a-t-il un aperçu de la raison pour laquelle cela se produirait?

+3

Etes-vous sûr Modifier ce Breaks? Parce que beaucoup d'articles disent que l'ID ne sera pas disponible pendant l'opération d'ajout car, il n'a pas encore été généré. Donc, pour obtenir la valeur dans la colonne Calculé en fonction de l'ID, vous devez modifier l'élément afin que la valeur soit reflétée. – Kusek

+0

Oui, maintenant que vous le dites, je pense que vous avez raison. Il me semble quand je vais dans la colonne calculée (je n'ai même pas besoin d'éditer quoi que ce soit), puis cliquez sur "OK", tous les ID sont générés/calculés, car tout manquait. Toutefois, la modification d'un enregistrement après cela fait disparaître la valeur [ID] pour cet enregistrement. * sigh * Avez-vous des idées sur la façon d'inclure l'ID dans le calcul et de le faire coller à travers les modifications d'enregistrement? – program247365

Répondre

4

Je confirme le comportement mentionné ci-dessus. Tout ajout/modification effacera la partie [ID]. Si vous modifiez la colonne dans la liste et mettez à jour la formule, elle mettra à jour TOUS les éléments de la liste pour qu'ils soient corrects (jusqu'à ce que vous modifiiez l'élément). J'ai trouvé this post that mentions the same problem.

La seule solution semble être de créer un flux de travail simple à l'aide de SharePoint Designer qui mettrait à jour un champ de texte dans votre liste.

+0

Ouais, un flux de travail SharePoint semble être la seule solution. Merci. – program247365

1

J'ai eu un problème similaire il y a quelque temps. Grâce à d'autres blogs et experts, j'ai découvert que la colonne [ID] ne doit pas être utilisée dans une colonne calculée car elle provoque des dégâts et provoque de nombreuses erreurs. Désolé - supprimez la colonne d'identification et tout devrait bien se passer.

1

Cette question est un peu ancienne, mais j'ai eu le même problème et trouvé une solution pour cela. C'est un correctif assez spécifique qui n'aidera pas tout le monde - il implique l'utilisation de javascript dans une partie Web de l'éditeur de contenu pour mettre à jour le champ calculé.

Ce site - http://blog.pathtosharepoint.com/2008/09/01/using-calculated-columns-to-write-html/ - donne un exemple d'utilisation de javascript de la même manière que je l'ai utilisé. Le bloc de code important est la première boucle while. Le but est de récupérer la colonne ID de la boîte hors de la liste et de mettre à jour tout champ calculé ayant besoin de l'ID.

Dans mon cas, j'avais une URL dans un champ calculé qui nécessitait l'ID comme paramètre .. bien sûr cela ne fonctionnerait pas normalement parce que vous ne pouvez pas mettre l'ID dans un champ calculé. Ce que j'ai fait, c'est que j'ai mis "? ID = null" dans le paramètre ID de l'URL de mon champ calculé, puis je l'ai remplacé par l'identifiant qui a été récupéré avec javascript .. donc chaque fois que la page est chargée des URL pour avoir l'ID correct.

+1

Merci d'avoir ajouté l'info! – program247365

+0

Y a-t-il une solution pour cela sur SharePoint 2010? J'ai essayé le code JavaScript pour SharePoint 2010, mais cela n'a pas fonctionné. – hemalshah

0

Je sais que c'est très vieux mais je ne pouvais pas trouver une version plus récente de la question ailleurs et la réponse ci-dessus de ferr résolu le problème pour moi mais n'est pas très clair alors j'ai pensé que je le mettrais à jour.

Cela suppose que vous voulez utiliser l'ID dans le code HTML de sortie (par exemple dans un lien), je pense que c'est assez commun.

Utilisation du javascript à partir du lien pathtosharepoint j'ai ajouté dans ce qui suit pour obtenir l'identifiant avec une instruction if pour la sécurité:

if (HTMLregexp.test(CellContent)) { //original pathtosharepoint line 
    if (NodeSet[i].parentNode.getAttribute("iid")){ 
     var SPID = NodeSet[i].parentNode.getAttribute("iid").split(",")[1]; 
     CellContent = CellContent.replace("SPIDReplace", SPID) 
    } 
NodeSet[i].innerHTML = CellContent; //original pathtosharepoint line 

Ceci est mis dans la boucle while du dernier correctif de pathtosharepoint au moment de la rédaction . Cela fonctionne pour moi sur SharePoint 2010. Remarque: Inclure la chaîne "SPIDReplace" dans votre colonne calculée pour la remplacer par l'ID de l'article.

page pathtosharepoint: http://blog.pathtosharepoint.com/category/calculated-columns/ Code pathtosharepoint: http://pathtosharepoint.com/Downloads

+0

En effet des informations plus anciennes avec une alternative plus récente (pour certains cas d'utilisation), voir http://stackoverflow.com/questions/28986458/columns-dereferencing-in-sharepoints-calculated-column –

Questions connexes