SharePoint:编辑列表项时计算的列值消失。有任何想法吗?

时间:2009-07-07 20:20:01

标签: sharepoint calculated-columns

我在自定义SharePoint 2007列表中有一个计算列,其中包含以下公式:

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

如果在列表中创建了一个项目,一切都很好,但是,当项目更新时,[ID]列不再位于该项目的计算列中。

所以,在创作时:“IR-40-TheTitleIsHere”,但在编辑之后,它是“IR - TheTitleIsHere”。

任何人都对为什么会发生这种情况有所了解?

4 个答案:

答案 0 :(得分:4)

我确认了上面提到的行为。任何添加/编辑都将清除[ID]部分。如果您编辑列表中的列并更新公式,它将更新所有列表项是正确的(直到您对项目进行编辑)。

我找到了this post that mentions the same problem

听起来唯一的解决方案就是使用SharePoint Designer创建一个简单的工作流程来更新列表中的文本字段。

答案 1 :(得分:1)

我有一个类似的问题。通过其他博客和专家,我发现不应在计算列中使用[ID]列,因为它会造成严重破坏并导致许多错误。对不起 - 删除ID列,你应该没事。

答案 2 :(得分:1)

这个问题有点陈旧,但我遇到了同样的问题并找到了解决方案。这是一个非常具体的修复,并不会帮助每个人 - 它涉及在内容编辑器Web部件中使用javascript来更新计算字段。

这个网站 - http://blog.pathtosharepoint.com/2008/09/01/using-calculated-columns-to-write-html/ - 给出了一个如何使用javascript的例子,就像我使用它一样..重要的代码块是第一个while循环。重点是从列表中获取开箱即用的ID列,并更新任何计算字段需要ID。

在我的情况下,我在计算字段中有一个URL,需要将ID作为参数..当然,由于您无法将ID放在计算字段中,因此无法正常工作。我做的是在我的计算字段的url的ID参数中放入“?ID = null”,然后我将其替换为使用javascript检索的ID ..因此,无论何时加载页面,js都会启动并更新所有具有正确ID的URL。

答案 3 :(得分:0)

我知道这已经很老了,但我无法在其他任何地方找到问题的新版本,而ferr的上述答案为我解决了问题,但并不是很清楚所以我认为我是&#39 ; d更新它。

这假设你想在输出HTML中使用ID(例如在链接中),我认为这很常见。

使用来自pathtosharepoint链接的javascript我在下面添加了以获取带有安全性的if语句的id:

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

这是在编写时最新的pathtosharepoint修复的while循环中。这适用于SharePoint 2010。 注意:包括字符串" SPIDReplace"在您计算的列中,将其替换为项目ID。

pathtosharepoint页面:http://blog.pathtosharepoint.com/category/calculated-columns/ pathtosharepoint代码:http://pathtosharepoint.com/Downloads